DLL库链接
DLL是windows下的動態(tài)庫(linux下叫so), 一般編譯出來有l(wèi)ib和dll兩個文件, 注意這里的lib同windows的靜態(tài)lib庫不同,它里面只包含了符號表, 具體了函數(shù)實現(xiàn)還是在DLL里面。
DLL可以分為隱式鏈接和顯示鏈接。
一般常用的是隱式鏈接, 即編譯的時候只引入lib文件。
1、代碼中使用預(yù)編譯宏引入。
2、vs 項目屬性頁指定庫文件路徑和lib文件名。
庫目錄指定lib文件所在目錄
附加依賴項指定lib文件名。
運行時把dll文件放在可執(zhí)行程序相同目錄或系統(tǒng)環(huán)境目錄下即可自動鏈接。
顯式鏈接 。
代碼中通過LoadLibrary()指定鏈接庫。
這種方式自動的鏈接還需要GetProcAddress獲取到函數(shù)指針(其實是符號地址, 也能通過它獲取到全局變量等)才能使用庫函數(shù)。
typedef int (*_p)(int ,int); _p pAdd = (_pAdd)GetProcAddress(hDll, "add");兩種方式加載時間點有所不同,顯示鏈接在調(diào)用LoadLibrary時就開始加載庫文件, 隱式鏈接時在調(diào)用第一個庫函數(shù)前加載。
參考:
DLL庫遇到的問題:
https://editor.csdn.net/md/?articleId=107345845
總結(jié)
- 上一篇: Go 语言web 框架 Gin 练习3
- 下一篇: 突破5G壁垒,睿至科技集团以技术实力赋能