我有一个从 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
添加回答
举报
0/150
提交
取消