別問,問就是被迫營業
學新東西嘛,就要先去前輩那裡了解一下基本概念~
傳送門在這裡,客官請
總所周知,c_t是乙個實踐型選手
廢話不多說,今天就編寫乙個dll感受一下ta的魅力:
檔案 -> 新建 -> 專案 -> 選擇visual c++ -> windows桌面 -> 動態鏈結庫
我們可以觀察一下在新建的專案中,已經包含了兩個標頭檔案和兩個原始檔
// 從 windows 標頭檔案中排除極少使用的內容
// windows 標頭檔案
#include
// pch.h: 這是預編譯標標頭檔案。
// 下方列出的檔案僅編譯一次,提高了將來生成的生成效能。
// 這還將影響 intellisense 效能,包括**完成和許多**瀏覽功能。
// 但是,如果此處列出的檔案中的任何乙個在生成之間有更新,它們全部都將被重新編譯。
// 請勿在此處新增要頻繁更新的檔案,這將使得效能優勢無效。
#ifndef pch_h
#define pch_h
// 新增要在此處預編譯的標頭
#include
"framework.h"
#endif
//pch_h
// dllmain.cpp : 定義 dll 應用程式的入口點。
#include
"pch.h"
bool apientry dllmain
( hmodule hmodule,
dword ul_reason_for_call,
lpvoid lpreserved
)return true;
}
// pch.cpp: 與預編譯標頭對應的原始檔
#include
"pch.h"
// 當使用預編譯的頭時,需要使用此原始檔,編譯才能成功。
新建.h和.cpp的方法不用多說
這裡我們編寫乙個彩色字型的輸出函式show()
#pragma once
// 保證標頭檔案只被編輯一次
__declspec
(dllexport)
void
show()
;// 在要輸出的函式前加上 __declspec(dllexport),表示輸出
// first.cpp
#include
"pch.h"
//新增預設標頭檔案
#include
"first.h"
#include
#include
using
namespace std;
void
show()
解決方案生成成功之後,我們可以在myfirstdll\debug目錄下看見dll和lib檔案
lib是我們寫在程式中新增的檔案,dll是我們在生成程式之後要使用的檔案
接下來的操作請按照步驟,慢慢來~
// test.cpp
#include
"first.h"
#include
intmain()
動態鏈結庫 靜態鏈結庫
包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...
靜態鏈結庫 動態鏈結庫
庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...
靜態鏈結庫,動態鏈結庫
關於靜態鏈結庫,參考如下博文 當你完成了 開發,想把這個 給別人用,但是又不希望別人看到原始碼,就要給別人乙個庫和標頭檔案,庫和標頭檔案是配合的,缺一不可。或者過程相反,你從別人那裡拿到乙個庫和標頭檔案來使用。那麼如何編譯生成乙個庫給他人,如何使用從他人那裡拿到的庫呢?範例1 我們想把linuxfr...