1. 程式人生 > 實用技巧 >Windows動態庫和靜態庫

Windows動態庫和靜態庫

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(); //