工作需求,需要在activity调用coco2d开发的游戏源码.cpp方法中的函数执行,于普通JNI调用不同的是java调用时需要做修改
activity中实现
1:首先是定义jni方法合要调用的so名称
public native void sendcard(int card);
static {
System.loadLibrary("MyGame");
}
2:因为是coco2d开发游戏的cpp文件,所以因为线程问题需要如下方式调用。否则调用方法运行时会出错
public void runNativeSendCard(final int card) {
Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable() {
@Override
public void run() {
sendcard(card);//在此调用原函数
}
});
}
cpp文件实现
1:
extern "C"
JNIEXPORT void JNICALL
Java_org_cocos2dx_cpp_NativeUtil_sendcard(JNIEnv *env, jobject instance, jint card) {
//此处执行cpp中函数
}