0
我一直在努力熟悉JNI及其功能。我想弄清楚我怎么可能继续参考Java环境。我首先调用本地方法,商店从jobject创建“NewGlobalRef”,并且它在一段时间内工作正常。但突然之间我收到致命的错误和日志。我非常确定垃圾收集器会删除某些东西,即使我始终在双方中始终引用该对象。使用JNI异步调用Java方法
我在做什么大气压是这个
我调用本地方法
myCoolObject.nativeMethod(otherCoolObject);
我保持参照otherCoolObject所有在Java方面的时间。什么本地方法的作用是
JNIEXPORT void JNICALL Java_HelloWorld_nativeMethod(JNIEnv *env, jobject obj , jobject otherCoolObject) {
cout << "Called native method!" << endl;
coolObj = env->NewGlobalRef(otherCoolObject);
clazz = (*env).GetObjectClass(coolObj;
callbackEnv = env;
methodId = (*env).GetMethodID(clazz, "callback", "(II)V");
jint x = 1;
jint y = 2;
(*callbackEnv).CallVoidMethod(coolObj, methodId, x, y);
}
并在此之后,我可以调用这个方法一段时间,但所有的突然它给了我致命的错误,我告诉你关于
如果我尝试使用JNI_GetCreatedJavaVMs()我只得到“未定义引用'_imp__JNI_GetCreatedJavaVMs @ 12'”上面的错误代码 – Ruuhkis 2012-04-03 14:35:09
发现此线程可能会有用:http://www.velocityreviews.com/forums/t130983-call-java-method-from-c-jni.html – shem 2012-04-03 15:00:36
After我创建了全球参考它开始工作,但一段时间后,它会产生新的致命错误 – Ruuhkis 2012-04-03 15:06:59