jvm.dll 上的 LoadLibrary 失败,错误代码为 183

LoadLibrary on jvm.dll fails with error code 183

我正在尝试在 C++ 中使用 JNI 来调用来自 Java 的方法。

我已经在控制台应用程序上尝试过它并且它有效,但是当我切换到在任何应用程序中加载的 DLL 时,它失败并出现错误 "ERROR_ALREADY_EXISTS"

    HMODULE jvmDLL = LoadLibrary("C:\Program Files\Java\jre1.8.0_191\bin\server\jvm.dll");
    if (!jvmDLL) {
        int error = GetLastError(); // this returns 183
    }

除了注入到任何应用程序中的 DLL 之外,这在任何情况下都可以正常工作。它不应该为空。

试试这个:

HMODULE jvmDLL = LoadLibrary("C:\Program Files\Java\jre1.8.0_191\bin\server\jvm.dll");
if (!jvmDLL)
   jvmDLL = GetModuleHandle("jvm.dll");
}