JNIEnv不能在其他c文件中调用方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JNIEnv不能在其他c文件中调用方法?相关的知识,希望对你有一定的参考价值。
我有两个文件: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值。谢谢你们所有人。
以上是关于JNIEnv不能在其他c文件中调用方法?的主要内容,如果未能解决你的问题,请参考以下文章