在C++中,可以使用以下步驟調用DLL庫函數:
包含頭文件:首先,需要包含DLL庫的頭文件。頭文件通常包含了DLL庫中函數的聲明和定義。
加載DLL庫:使用LoadLibrary
函數加載DLL庫。這個函數將返回一個指向DLL庫的句柄。
獲取函數地址:使用GetProcAddress
函數獲取要調用的函數的地址。這個函數需要傳入DLL庫的句柄和函數名。
調用函數:將獲取到的函數地址強制轉換為正確的函數指針類型,然后通過該指針調用函數。
卸載DLL庫:使用FreeLibrary
函數卸載加載的DLL庫。
以下是一個示例代碼:
#include <iostream>
#include <Windows.h>
// 聲明DLL庫中的函數
typedef int (*AddFunc)(int, int);
int main() {
// 加載DLL庫
HINSTANCE hDLL = LoadLibrary(TEXT("mydll.dll"));
if (hDLL != NULL) {
// 獲取函數地址
AddFunc add = (AddFunc)GetProcAddress(hDLL, "add");
if (add != NULL) {
// 調用函數
int result = add(3, 5);
std::cout << "Result: " << result << std::endl;
} else {
std::cout << "Failed to get function address." << std::endl;
}
// 卸載DLL庫
FreeLibrary(hDLL);
} else {
std::cout << "Failed to load DLL library." << std::endl;
}
return 0;
}
在上述代碼中,首先使用LoadLibrary
函數加載了名為mydll.dll
的DLL庫。然后使用GetProcAddress
函數獲取了mydll.dll
中的add
函數的地址,并將其轉換為函數指針類型AddFunc
。最后,使用該函數指針調用了add
函數,并打印了結果。最后,使用FreeLibrary
函數卸載了DLL庫。請注意,這里的函數聲明和定義需要與DLL庫中的函數保持一致。