DLL的部署和使用 VS2010 2012

2021-06-19 04:59:56 字數 1509 閱讀 7047

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種呼叫方式都可以使用,但是顯式呼叫必須要...