来自JNI_CreateJavaVM的异常0xC0000005 (jvm.dll)
2022-09-03 00:30:50
我正在使用以下C++代码初始化Java VM。 抛出一个异常,但如果我忽略它,就会失败。JNI_CreateJavaVM
0xC0000005
'Jni.exe' (Win32): 已加载 'C:\Tools\Java\Jdk8.77x86\jre\bin\zip.dll'。无法找到或打开 PDB 文件。
在 Jni 中0x02900282引发的异常.exe:0xC0000005:访问冲突读取位置0x00000000。
“Jni.exe” (Win32):已加载“C:\Windows\SysWOW64\shell32.dll”。无法找到或打开 PDB 文件。
我是否忘记了设置或执行某些操作,或者这是“正常”行为?
#include <array>
#include "jni.h"
int main( int argc, char const* args[])
{
JavaVM* jvm;
JNIEnv* env;
std::array<JavaVMOption,1> options;
options[0].optionString = "-Djava.class.path=C:/Users/Thomas/Documents/Visual Studio 2015/Projects/Jni/x64/Debug";
options[0].extraInfo = nullptr;
JavaVMInitArgs vm_args;
vm_args.version = JNI_VERSION_1_8;
vm_args.options = options.data();
vm_args.nOptions = options.size();
vm_args.ignoreUnrecognized = false;
auto rc = JNI_CreateJavaVM( &jvm, reinterpret_cast<void**>(&env), &vm_args );
if( rc == JNI_OK )
{
jvm->DestroyJavaVM();
}
}
这适用于“发布”和“调试”以及 x86 和 x64 生成。