我在JNIEXPORT
中有一个JNICALL
void C++
函数,它充当我Java
代码的回调函数。在Java
警告C++
代码发生了某些事情后,我想调用同一文件中的C++
个函数之一。
但是我假设JNICALL
具有不同的范围,因为当我尝试进行该调用时,我的代码崩溃了。 (我得到“访问过时的本地参考”JNI
错误)
从我见过的大多数示例中,JNICALL
函数会触发对JNI
函数的Java
调用,我已经知道该怎么做了。
但是如何从C++
函数内部进行JNIEXPORT
函数调用?
编辑: 我应该注意到,我认为这与尝试根据我的调试调用Cocos2dx插件更为密切相关。
void MyClass::myFunction(const char* param)
{
CCLOG("Got into myFunction");
PluginParam pParam(param);
_plugin->CallFuncWithParam("passParam", &pParam, NULL);
}
extern "C"
JNIEXPORT void JNICALL Java_com_my_package_Class_gotParam(JNIEnv *env, jobject obj, jstring param)
{
CCLOG("Got into param callback");
const char* nativeStr = env->GetStringUTFChars(param, NULL);
MyClass class;
class.myFunction(nativeStr);
env->ReleaseStringUTFChars(param, nativeStr);
}
我能够看到我的调试输出,但它在callFuncWithParam行崩溃。