在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的句柄,避免内存泄漏。