我正在开发一个 dll,它调用一个 jar 通过 JNI 完成大部分工作。如何创建 DLL,使其在加载 DLL 时仅创建一次 JVM,并在卸载 DLL 时释放它?
最佳答案
提供一个 DllMain 函数,其模式如下:
BOOL WINAPI DllMain(
HINSTANCE hinstDLL, // handle to DLL module
DWORD fdwReason, // reason for calling function
LPVOID lpReserved) // reserved
{
// Perform actions based on the reason for calling.
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
// Initialize once for each new process.
// Return FALSE to fail DLL load.
LOAD_JVM(); // <-----------------------------------------
break;
case DLL_THREAD_ATTACH:
// Do thread-specific initialization.
break;
case DLL_THREAD_DETACH:
// Do thread-specific cleanup.
break;
case DLL_PROCESS_DETACH:
// Perform any necessary cleanup.
UNLOAD_JVM(); // <-----------------------------------------
break;
}
// Successful DLL_PROCESS_ATTACH.
return TRUE;
}
关于java - 如何在加载 DLL 时加载 JVM 并在卸载 DLL 时释放它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8193717/