天天看點

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随可執行檔案一起釋出

繼續閱讀