dll(dynamic link library)動態鏈結庫, 直觀講就是封裝起來的一堆函式,編譯成二進位制,來進行元件化,模組化,同時防止了技術洩露(most important ...)。
dll的使用分兩種形式:寫**來呼叫;設定專案屬性來呼叫。
寫**呼叫就是在**中寫:
hmodule procad = loadlibrary(...);
這種方法類似於使用鍊錶代替陣列,會優化程式但是增加程式設計複雜度,也容易出錯,不建議普通程式使用。這裡只介紹dll的自動鏈結.
1,放檔案:首先將你的dll和對應的lib檔案都放到debug生成目錄下。
2,新增庫目錄:
依次進入->解決方案(solution)->專案屬性(properties)->鏈結器(linker)
屬性中有乙個附加庫目錄(additional library directory) 在裡面加入你當前工程的debug目錄,就是你剛才放dll的地方。
3,新增lib檔案:在
鏈結器linker->輸入input
的屬性中新增附加依賴項(additional dependences):
新增如下: $(targetdir)\你的lib.lib 【注釋1】
4,最後 將lib 和 dll加入工程:
右鍵你的工程->加入(add)->已有檔案(existing)
把你放在debug裡面的lib和dll加進來。
(可選)5,加個頭檔案:
如果你很清楚你的dll裡有什麼函式,你就可以直接用函式名正常呼叫了,但是大多數情況dll裡面函式很多,程式設計師習慣於在工程裡新增乙個標頭檔案,
裡面寫了dll函式宣告。
一般來說,給你的dll都會給你配套的 lib 和 標頭檔案。
另外,一些環境下還必須有標頭檔案宣告,才能讓編譯器在dll中尋找函式實現,
my_dll_name.h
void _api_ __stdcall_ printhello();
int _api_ __stdcall_ getbigger(int a,int b);
.......
專業的開發人員稱此方法為(隱式呼叫),不易理解記憶。建議朋友們記 「自動呼叫」,不用寫** ,將另一種需要寫**的呼叫記 「手動呼叫」。
【注釋1】$(targetdir)就是你的輸出資料夾,工程當前是debug模式,所以輸出到debug。就像其他程式一樣,他們的dll是和exe等檔案放在一塊的,只要在乙個目錄下,就可以找到dll。程式"錯誤:找不到***x.dll"的現象就是因為dll不在資料夾下。當然也可以把它設定成d:\programfiles\ 但是如果你的使用者沒有d盤,(像我一哥們),就沒辦法了。
(dig tech, speak human)
講技術,說人話
aurora 極光城
vs2010安裝和使用
vs2010是之前我跟老師做 專案時安裝的,這次軟體工程作業我就用它了,安裝過程中的截圖就不存在了,我就詳細說說它的使用吧。下面讓我們用vc2010來做乙個控制台的helloworld程式吧。vs2010裡面不能單獨編譯乙個.cpp或者乙個.c檔案,這些檔案必須依賴於某乙個專案,因此我們必須建立乙個...
vs2010中靜態呼叫dll
在網上搜尋良久,關於靜態呼叫dll的方式講解的都不是很清楚。通過自己摸索,結合網上提供的一些方法,現在總結兩種靜態呼叫dll的方法。一 同一解決方案下面靜態呼叫dll 當我們建立了乙個dll的工程,此工程的預設輸出目錄是在 solutiondir configuration 而此解決方案中,生成.e...
VS2010下 DLL的建立和使用總結
建立和簡單的使用網上各種好人都已寫的很好了。就不去再費勁去做無用功了。此處推薦 總結一下 dll的呼叫方式可以分為隱式和顯式,各具優點和缺點。功能性函式匯出方式可以分為匯出符號匯出和def檔案裡列出匯出函式列表。注意的是def檔案列出匯出函式列表生成的dll2種呼叫方式都可以使用,但是顯式呼叫必須要...