c++中使用外部庫exe,.dll與.lib檔案的生成與使用的詳解
兩種庫:
• 包含了函式所在的DLL檔案和檔案中函式位置的資訊(入口),程式碼由執行時載入在程序空間中的DLL提供,稱為動態連結庫dynamic link library。
• 包含函式程式碼本身,在編譯時直接將程式碼加入程式當中,稱為靜態連結庫static link library。
共有兩種連結方式:
• 動態連結使用動態連結庫,允許可執行模組(.dll檔案或.exe檔案)僅包含在執行時定位DLL函式的可執行程式碼所需的資訊。
• 靜態連結使用靜態連結庫,連結器從靜態連結庫LIB獲取所有被引用函式,並將庫同程式碼一起放到可執行檔案中。
--------------------------------------------------------------------------------
兩種檔案的區別
--------------------------------------------------------------------------------
使用lib需注意兩個檔案:
•.h標頭檔案,包含lib中說明輸出的類或符號原型或資料結構。應用程式呼叫lib時,需要將該檔案包含入應用程式的原始檔中
:屬性頁”->“VC++目錄”->“包含目錄”中追加下面一行:;include資料夾路徑。
•.LIB檔案:放在工程屬性裡面:o屬性頁”->“VC++目錄”->“庫目錄”中追加一行,lib檔案的路徑。
exe檔案:加入環境變數
使用dll需注意三個檔案:
•.h標頭檔案,包含dll中說明輸出的類或符號原型或資料結構的.h檔案。應用程式呼叫dll時,需要將該檔案包含入應用程式的原始檔中。
•.LIB檔案,是dll在編譯、連結成功之後生成的檔案,作用是當其他應用程式呼叫dll時,需要將該檔案引入應用程式,否則產生錯誤(如果不想用lib檔案或者沒有lib檔案,可以用WIN32 API函式LoadLibrary、GetProcAddress裝載)。
•dll檔案,放在工程專案的debug下面。真正的可執行檔案,開發成功後的應用程式在釋出時,只需要有.exe檔案和.dll檔案,並不需要.lib檔案和.h標頭檔案。