Windows動態庫和靜態庫
阿新 • • 發佈:2020-08-17
Windows動態庫和靜態庫
庫:二進位制檔案
靜態庫
.lib, 庫檔案不是可執行程式
在連結階段, 將程式碼完整的拷貝到可執行程式中
使用靜態庫需要匯入標頭檔案和庫
#pragma comment(lib, "路徑") // 匯入庫
修改庫需要重新生成整個應用程式
動態庫
1. 隱式載入
將所有函式都載入
.dll和.lib
在連結階段, 將引入庫拷貝到可執行程式中
匯出方式
1. 加入匯出符號
_declspec(dllexport) int MyAdd(int a, int b);
2. 新增模組定義檔案
LIBRARY "專案名稱" EXPORTS MyAdd @1 MySub @2
會生成.dll和.lib
.lib是引入庫, 標識函式在動態庫中的位置
#pragma comment(lib, "引入庫路徑")
一般將.dll放入.exe同級目錄下或系統目錄下
.dll是在執行階段通過.lib載入的
當引入庫改變(增加了可以使用的新功能等), 需要重新載入整個.exe
2. 顯式執行時載入
更靈活, 可以指定需要用哪個函式
1. 載入庫
LoadLibrary(); // 載入庫
2. 獲取函式地址
GetProcAddress();
3. 解除安裝庫
FreeLibrary(); //