参考:
原理:
通过JNI获取java虚拟机,再获取当前程序的JNI环境,通过JNI环境获取需要调用的java类信息,再获取需要调用的java类中的函数信息。再通过JNI环境调用,使用类信息、函数信息,调用对应的java函数。
实现:
cocos2dx 封装了一个JniHelper的类,主要通过如下接口实现C++调用java
typedef structJniMethodInfo_
{
JNIEnv* env; // jclass classID; // jmethodID methodID; //} JniMethodInfo;/*methodinfo:JniMethodInfo的引用,将引用中的env,classID,methodID
className: java类的完全路径
methodName: java类方法
paramCode: 函数类型简写
注意:两个方法的唯一不同处,是前者调用java中的static方法,后者调用普通的方法*/
static bool getStaticMethodInfo(JniMethodInfo &methodinfo,const char *className,const char *methodName,const char *paramCode);static bool getMethodInfo(JniMethodInfo &methodinfo,const char *className,const char *methodName,const char *paramCode);
示例:
//摘录于: c