windows編譯動態鏈接庫,dll+lib的形式


  之前一直在linux上做開發,沒怎么關注過windows上如何編譯動態鏈接庫。不過一直存疑,為什么windows上的動態鏈接庫是.dll配合.lib使用的,這個又是怎么生成的呢,通過一段時間的查資料和嘗試,最終發現,windows上生成動態鏈接庫之后如果需要.lib,用於編譯階段的符號查找,那么,必須要在需要導出的函數前面加一個宏。也就是__declspec(dllexport),在使用時為__declspec(dllimport)。

具體可以是

1 #ifdef MAKEDLL_EXPORTS
2 #define MAKEDLL_API __declspec(dllexport)
3 #else
4 #define MAKEDLL_API __declspec(dllimport)
5 #endif

然后記得在導出庫文件的工程中加入MAKEDLL_EXPORTS宏即可。

  這樣,在生成時會生成一個dll+一個lib文件。否則,只能動態加載dll文件才能使用,並且不能直接使用庫里面的函數,需要通過動態加載的dll來調用其中的庫函數。

 

 

參考:

https://www.cnblogs.com/qinguoyi/p/7257353.html


免責聲明!

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



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