从JNICALL调用Cocos2dx插件函数?

时间:2014-03-27 23:29:00

标签: java c++ java-native-interface cocos2d-x

我在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行崩溃。

0 个答案:

没有答案