c++ dll 中获取 hInstance
时间: 2024-03-14 14:47:24 浏览: 18
在C++ DLL中,可以通过DllMain函数获取DLL的实例句柄(hInstance)。DllMain是DLL的入口点,它在DLL被加载时被调用。
下面是一个示例代码,在DllMain函数中获取DLL的实例句柄:
```c++
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// DLL被加载时调用
hInstance = hModule; // 获取DLL的实例句柄
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
```
在上面的代码中,hInstance为全局变量,用于保存DLL的实例句柄。在DLL_PROCESS_ATTACH消息被收到时,将hModule赋值给hInstance即可。
需要注意的是,在DLL中获取实例句柄时,不能使用GetModuleHandle(NULL)函数,因为这会返回主程序的实例句柄,而不是DLL的实例句柄。