猿问

JNI:产生需要与 Java 交互的线程的本地方法

我有一个从 Java 进程调用的 C 方法:


extern "C" {

    JNIEXPORT jstring JNICALL Java_bla_bla_bla(JNIEnv *env, jclass java_class, jint param) {

         /* Spawn C threads that are going to call Java methods */

    }

}

问题是我的本地方法从 Java 获得的所有东西都是一个JNIEnv实例。为了打电话AttachCurrentThread(),我需要一个JavaVM对象。


如何JavaVM从本机方法中获取指针?


富国沪深
浏览 159回答 1
1回答

12345678_0001

一种替代方法是缓存JavaVM*您收到的JNI_OnLoad.另一种选择是调用GetJavaVM属于以下部分的函数JNIEnv:JNIEXPORT jstring JNICALL Java_bla_bla_bla(JNIEnv *env, jclass java_class, jint param) {    JavaVM *jvm;    if (env->GetJavaVM(&jvm)) {        // Something went wrong    }    // Pass jvm to the new thread
随时随地看视频慕课网APP

相关分类

Java
我要回答