我正在通过Eclipse(Mars 2)使用MinGW_64编译我的代码。当我通过Eclipse(Run As)运行代码的发布版本时,JVM按预期创建(返回值为零)但是当我使用Eclipse(Debug As)调试并跨越JNI_CreateJavaVM行时,我得到一个分段错误在我单步执行之后,仍然会得到零返回值。
编程接收信号SIGSEGV,分段故障。 0x000000000f0103b4在? ()
有人可以解释为什么会这样吗?
这是代码(确保包含jni.h和jni_md.h文件以及jvm libraray中的链接 - 我使用的是Java jdk 1.8.0_101)。
/*
* jnitest.c
*/
#include "jni.h"
JNIEnv* create_vm()
{
JavaVM* jvm;
JNIEnv* env;
JavaVMInitArgs args;
JavaVMOption options[1];
args.version = JNI_VERSION_1_8;
args.nOptions = 1;
options[0].optionString = "-Djava.class.path=.";
args.options = options;
args.ignoreUnrecognized = JNI_TRUE;
long result=JNI_CreateJavaVM(&jvm, (void **)&env, &args);
printf("here is the result %li", result);
return env;
}
int main(int argc, char **argv)
{
JNIEnv* env = create_vm();
}