可以在jni的实现文件中,添加JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved);实现jvm的获取,此函数会在java加载native 库时调用。
也可以在native的实现函数中获取jvm变量。
代码:
声明全局变量: JavaVM* jvm;
jint retint = env->GetJavaVM(&jvm);
获取jvm并存储的目的是:实现c到java的反调,而不是回调。
在反调中应该是这样的:
JNIEnv * env;
jint envret = jvm->AttachCurrentThread((void**)&env,NULL);
....
jvm->DetachCurrentThread();