dll動態鏈接庫與lib靜態鏈接庫的生成與使用

根據套路,首先解釋一下lib與dll的區別:

lib:一般指靜態鏈接庫,將所有編譯之後的obj或o打包生成,裏面包含代碼實現,比較大。在使用時,新的項目將該lib中的代碼打包進自己的工程,因此生成的可執行文件會比較大。使用的時候只要有.lib和.h就好。新的工程發佈時,不需要lib一同發佈。

dll:動態鏈接庫,在使用的時候需要三個東西:.dll、.lib、.h     注意這裏的lib和上面的不是一回事,這裏的lib文件非常小,又叫引入庫。動態鏈接庫的代碼實現在dll中,lib中放的是dll中各種方法的索引之類的。發佈新項目時,需要將dll文件一起發佈,程序執行時自行去dll中查找實現方式。可以實現一套dll,多個程序使用。也方便升級。

生成:

靜態庫的生成非常簡單,VS中選中項目->右鍵屬性->配置屬性->常規->配置類型選擇爲“靜態庫(lib)”,之後生成解決方案即可

動態庫的生成稍顯複雜,需要在.h文件中的函數聲明前加上  __declspec(dllexport)  然後  VS中選中項目->右鍵屬性->配置屬性->常規->配置類型選擇爲“動態庫(dll)”,之後生成解決方案即可。

注意  __declspec(dllexport)  一定要加,否則生成的dll是不帶lib引入庫的,無法使用                                                                            而且每個函數都要加,否則在使用時會找不到

使用:

靜態鏈接庫只要.lib和.h即可,將.h文件引入工程中,之後VS中選中項目->右鍵屬性->配置屬性->VC++目錄,將.h文件目錄和.lib文件目錄分別添加到包含目錄庫目錄中,之後點擊連接器->輸入,在附加依賴項處添加lib庫文件全名,項目中即可使用庫中的函數。     項目發佈時,只需要自己的可執行文件即可,.lib不用一起發佈

動態鏈接庫的使用需要.dll、.lib、.h,注意此處的lib和上面的不是一個東西,是指的動態鏈接庫的引入庫。.lib和.h文件操作與靜態鏈接庫的導入相同,將.dll文件放在項目根目錄下,即可。    項目發佈時,需要引用的.dll隨可執行文件一起發佈

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章