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檔...