为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2022-01-19 10:44:26
我有一个从 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从本机方法中获取指针?
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

一种替代方法是缓存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


查看完整回答
反对 回复 2022-01-19
  • 1 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信