VC 開發DLL學習筆記

2021-06-06 09:44:11 字數 1264 閱讀 9198

1.在vs2005中建立win32 dynamic-link library的方法:

檔案->新建->專案->visual c++->win32->win32專案,進入win32應用程式嚮導,

在應用程式設定的應用程式型別中選擇「dll(d)」,一般還要在附加選項中勾選「空專案」

2.在vs2005中新增dll的方法:

1)隱式鏈結方式載入dll

首先將dll專案中生成的.lib檔案和.dll檔案複製到呼叫專案中。其實專案在編譯時只需要.lib檔案,不需要.dll檔案;而編譯完成後,鏈結時就需要.dll檔案了,.lib檔案的任務就完成了,可以刪去(開發過程中建議保留,畢竟還要除錯),所以開始時兩個檔案可以一起拷過去。

然後有兩種方法匯入dll:一種是[解決方案資源管理器]「專案->屬性->配置屬性->鏈結器->輸入->附加依賴項」裡填寫「dll1.lib」(必須是.lib檔案,.dll檔案會出錯,原因當然就是因為鏈結時只要.lib檔案),多個lib以空格隔開;另一種方法是新增**#pragma comment(lib, "dll1.lib")。

2)顯示載入方式載入dll

首先將dll專案中生成的.dll檔案(不需要.lib檔案)複製到呼叫專案中,然後使用loadlibrary函式,以下是乙個例子:

void cdlltestdlg::onbnclickedbtnadd()

cstring str;

str.format("5 + 3 = %d", add(3, 5));

messagebox(str);

}兩種方法的比較:

1)隱式:實現簡單,但是每一次程式執行時都要把dll檔案載入到記憶體,時間和空間消耗大;而且要用到.lib和.dll兩個檔案。

2)顯式:實現較為複雜,但是每個.dll檔案只有在要用到其匯出的函式或類時才載入到記憶體,節約了時間和空間,同時只要用到.dll檔案,不需要.lib檔案。

3.vs2005的depends工具在vs的安裝檔案裡面,具體是……\microsoft visual studio 8\common7\tools\bin\depends.exe

4.vc++開發dll有三種呼叫約定:

1)預設式:會發生名字改寫,只能用於同一編譯器譯的程式;但是可以匯出類。

2)標準式:會發生名字改寫,不能匯出類;但可被其他編繹器編譯的程式使用(如delphi等pascal語言程式)。

3)extern "c"式:不能匯出類,只能用於c編譯器編譯的程式;但是不會發生名字改寫。

解決名字改寫的文法,寫乙個單獨的.def檔案,具體見孫鑫老師的《vc++深入詳解》p722

學習開發DLL筆記

最近學習用vc來開發win32 dll,學了這幾天,來作個總結。一 生成dll 1 用vc建立乙個win32dll工程 dlltest,選上 匯出符號 2 在dlltest.cpp中編寫匯出函式 fun 這個函式是別的程式要呼叫的函式 int fun int i 3 在dlltest.h中宣告匯出 ...

DLL學習筆記

讀win32 dll 在dll 中,必須顯示生命匯出函式,類似這樣 extern c declspec dllexport void myfunction int n 在客戶方面,必須宣告對應的匯入函式,類似這樣 extern c declspec dllimport void myfunction...

dll(學習筆記)

dll的基礎知識 複習一以前的知識 dllmain 匯入函式。僅有匯出資源的dll可以沒dllmain函式 bool apientry dllmain hmodule hmodule,dword ul reason for call,lpvoid lpreserved dll匯出函式的方式 def檔...