Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JNICALL调用Cocos2dx插件函数?_Java_C++_Java Native Interface_Cocos2d X - Fatal编程技术网

Java 从JNICALL调用Cocos2dx插件函数?

Java 从JNICALL调用Cocos2dx插件函数?,java,c++,java-native-interface,cocos2d-x,Java,C++,Java Native Interface,Cocos2d X,我在C++中有一个JNIEXPORTvoidJNICALL函数,它充当我的Java代码的回调函数。当Java警告C++代码发生了某些事情时,我想调用同一文件中的C++函数之一 但是我假设,JNICALL有一个不同的作用域,因为当我试图进行调用时,我的代码正在崩溃。(我得到“访问的过时本地引用”JNIerror) 在我看到的大多数示例中,JNICALL函数会触发对Java函数的JNI调用,我已经知道该怎么做了 但是如何从JNIEXPORT函数内部调用C++函数呢 编辑: 我应该注意到,我相信这与基

我在
C++
中有一个
JNIEXPORT
void
JNICALL
函数,它充当我的
Java
代码的回调函数。当
Java
警告
C++
代码发生了某些事情时,我想调用同一文件中的
C++
函数之一

但是我假设,
JNICALL
有一个不同的作用域,因为当我试图进行调用时,我的代码正在崩溃。(我得到“访问的过时本地引用”
JNI
error)

在我看到的大多数示例中,
JNICALL
函数会触发对
Java
函数的
JNI
调用,我已经知道该怎么做了

但是如何从
JNIEXPORT
函数内部调用
C++
函数呢

编辑: 我应该注意到,我相信这与基于我的调试尝试调用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);
}    

<>我能看到我的调试输出,但是它在CalfHealthPARAM行上崩溃了。< /P>发布实际代码,既要调用C++函数,又调用调用它的本机方法。请注意,您的“陈旧本地引用”错误是当您调用期望对象引用作为参数的JNI API函数时发生的。作为一种解决方法,我决定在
JNICALL
中直接调用我正在使用的Java库,因为Cocos2dx插件方式出于任何原因都不起作用。原则上,这与Cocos访问Java的方式相同,只是没有他们的PluginProtocol包装器漂亮。