在C++中,使用dllimport
是用來在程序中導入DLL中的函數或變量的關鍵字。dllimport
并不負責加載或卸載DLL,它只是告訴編譯器這些函數或變量是從DLL中導入的。
動態卸載DLL通常是通過使用LoadLibrary
函數加載DLL,然后使用FreeLibrary
函數卸載DLL來實現的。因此,dllimport
并不能動態卸載DLL。
要動態卸載DLL,可以使用以下步驟:
LoadLibrary
函數加載DLL,獲取DLL的句柄。GetProcAddress
函數獲取DLL中的函數地址。FreeLibrary
函數卸載DLL。示例代碼如下:
HMODULE hDll = LoadLibrary(TEXT("example.dll"));
if (hDll != NULL) {
// 獲取DLL中的函數地址
typedef void (*MyFunction)();
MyFunction myFunction = (MyFunction) GetProcAddress(hDll, "MyFunction");
if (myFunction != NULL) {
// 調用DLL中的函數
myFunction();
}
// 卸載DLL
FreeLibrary(hDll);
}
注意:在使用LoadLibrary
加載DLL后,需要使用FreeLibrary
來釋放DLL的句柄,避免內存泄漏。