我們的一位客戶遇到了我們的應用程序無法加載jvm.dll的問題。我們使用我們的軟件安裝了JRE,因此jvm.dll與我們所有其他客戶一樣適用。代碼如下:無法使用LoadLibrary加載jvm.dll
HMODULE MyApplication::GetJVMDll(char* szJavaHome)
{
HMODULE hLibrary;
char szPath[2048];
strcpy_s(szPath,2048,szJavaHome);
#if defined(_WIN64)
strcat_s(szPath, 2048,"\\bin\\msvcrt.dll");
#else
strcat_s(szPath, 2048,"\\bin\\msvcr71.DLL");
#endif
hLibrary = LoadLibrary (szPath);
if (!hLibrary) {
return NULL;
}
strcpy_s(szPath,2048,szJavaHome);
strcat_s(szPath, 2048,"\\bin\\server\\JVM.DLL");
hLibrary = LoadLibrary (szPath);
if (hLibrary) {
return hLibrary;
}
printErrorMessage(GetLastError());
return NULL;
}
正如我所說的,上面的代碼適用於除一個之外的所有客戶。 msvcrt.dll正在成功加載,但jvm.dll不是。 GetLastError()返回的錯誤是127.任何人都知道LoadLibrary爲什麼會失敗,這個客戶?
當LoadLibrary()對我而言失敗時,這是因爲依賴DLL丟失。使用依賴沃克(谷歌它)來檢查。 –