我有两个文件:MyJni.cpp 是 jni 文件。而MyObject.c是一个普通的c文件。
这是 MyJni.cpp 文件的代码:
JNIEXPORT void createMyObject(JNIEnv* env){
malloc(MyObject)
MyObject->setEnv(env);
MyObject->callbackFunc();
}
static Void callback_for_myobject(MyObject * obj){
JNIEnv* env = obj->m_env;
Env->NewStringUTF(); // **OK**
}
MyObject.c 文件是:
void* m_env;
setEnv(void* env){
m_env = env;
JNIEnv* pEnv = (JNIEnv*)env;
pEnv->NewStringUTF();// **ERROR**
}
Void callbackFunc()
{
callback_for_myobject(this);
}
我将 JNIEnv 保存到 MyObject(也许不应该这样做)。 而在 MyObject 中,我想调用 Jni 方法,但它不能。 当我回调 MyJni 文件时,它工作正常。
为什么?我找不到任何区别...... 我怎样才能让它在 MyObject 中工作?感谢您的帮助!
最佳答案
我找到了原因:JNIEnv是一个C++类,不能在C文件中使用。
在C文件中可以使用_JNIEnv。
是的,不应该保存 JniEnv 值。谢谢大家。
关于c - JNIEnv 不能调用其他 c 文件中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47883163/