2011-11-19 65 views

回答

1

提供一個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; 
} 
+0

問題是,加載一個JVM,我需要調用LoadLibrary加載的jvm.dll(我需要做這種方式)到我的地址空間這會在DllMain – shawn

+0

@shawn中導致死鎖 - 也許你可以通過創建一個線程並從該線程加載dll而不是直接在DllMain中解決此問題。 – mah