dll靜態調用和動態調用


動態鏈接庫有2種連接方式,一種是通過庫直接加入(又叫隱式加載或載入時加載),一種是在運行時加入。后者很好理解,比如LoadLibrary(),GetProcAddress()獲取想要引入的函數,使用完后,就FreeLibrary()。

 

在創建DllTest.exe文件之前,要先將MyDll.dll和MyDll.lib拷貝到當前工程所在的目錄下面,也可以拷貝到windows的System目錄下。如果DLL使用的是def文件,要刪除TestDll.h文件中關鍵字extern "C"。TestDll.h文件中的關鍵字Progam commit是要Visual C+的編譯器在link時,鏈接到MyDll.lib文件,當然,開發人員也可以不使用#pragma comment(lib,"MyDll.lib")語句,而直接在工程的Setting->Link頁的Object/Moduls欄填入MyDll.lib既可。

 

軟件工程方面能夠快速的發展,我相信源代碼重用起到了不可忽略的作用。在Linux平台下就C++而言,有以so結尾的動態鏈接庫文件,也有以.a結尾的靜態連接庫文件,這個有着明顯的區別。但是在Window平台下,通過Visual Studio編譯動態鏈接庫DLL這類項目時,即生成了目的動態鏈接庫DLL文件,同時還有一個同名的LIB文件。單獨編譯靜態連接庫項目時也生成了目標靜態鏈接庫LIB文件


**動態鏈接庫**
在其他項目中需要引用動態連接庫時,需要把動態連接庫的LIB文件作為資源引入到新項目當中,這樣在生成項目時才能夠編譯成功,這個過程當中並用不到DLL動態連接庫文件。只有當編譯完成,在運行階段才需要使用DLL文件,沒有的話則引發異常。

 

在Visual Studio中使用DLL-項目引用鏈接lib

https://blog.csdn.net/ebxds/article/details/40950539

https://blog.csdn.net/zhongjling/article/details/8078537


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM