java调用C++

cocos2d-x中通过Jni实现Java与C++的互相调用

混江龙づ霸主 提交于 2019-11-29 20:38:46
cocos2d-x中通过Jni实现Java与C++的互相调用。 cocos2d-x用开发者提供了一个类JniHelper,提供了java与c++之间互调的jni解决方案。 笔者所开发的“史上最坑爹的游戏”项目中使用到了JNI,为此专门定义了一个类JniUtil. 头文件JniUtil.h中需要引入如下两个.h文件: #include <jni.h> #include "platform/android/jni/JniHelper.h" 通过C++调用Java 声明一个函数,专门用于处理从C++调用Java的方法,所有调用Java的地方都走这个函数。 这样可以减少jni代码,通过Json来传递具体的调用指令,在java那边通过switch来进行区分,然后再通过java去调用具体的方法。 static void callJni(const char * data); 在JniUtil.cpp文件中如下实现: void JniUtil::callJni(const char *data){ JniMethodInfo minfo;//定义Jni函数信息结构体 //getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数 const char * jniClass = "com/xxxx/xxxx/xxxxxxxx";//这里写你所要调用的java代码的类名