JNI调用

来源:互联网 发布:网站域名申请 编辑:程序博客网 时间:2024/06/02 01:46
/*Java调用C++(就是讲Java中某个static native void 函数在C++中实现一下,然后在Java类中调用)*///在C++中对Java文件的private static native void getStone();方法实现为:#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台 extern "C"{void Java_com_qingxue_game_GunStreet_getStone(JNIEnv*  env, jobject thiz){CCLog("Java_com_qingxue_game_GunStreet_getStone");_gameScene->_panelLayer->leavedStoneNum += 15;const char* LeavedStoneNum = ((CCString*)_gameScene->chnStrings->objectForKey("leavedStoneNum"))->m_sString.c_str(); _gameScene->_panelLayer->leavedStoneLabel->setString(CCString::createWithFormat("%s: %d",LeavedStoneNum, _gameScene->_panelLayer->leavedStoneNum)->getCString());}}#endif /*C++调用java*///头文件#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include <jni.h> #include "platform/android/jni/JniHelper.h" #include <android/log.h> #endif //void GameScene::buyStone(){if(! CCDirector::sharedDirector()->isPaused()){CCDirector::sharedDirector()->pause();}    #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //判断当前是否为Android平台 JniMethodInfo minfo;  jobject jobj;  if (JniHelper::getStaticMethodInfo(minfo, "com/qingxue/game/LoveShootBirdsAndroid",   "getInstance", "()Ljava/lang/Object;"))  {  jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID); if (JniHelper::getMethodInfo(minfo, "com/qingxue/game/LoveShootBirdsAndroid",  "buyStoneSend", "()V"))  {  CCLog("jobj start");if(jobj == NULL) {return;}minfo.env->CallVoidMethod(jobj, minfo.methodID);  if(CCDirector::sharedDirector()->isPaused()){const char* LeavedStoneNum = ((CCString*)_gameScene->chnStrings->objectForKey("leavedStoneNum"))->m_sString.c_str(); _gameScene->_panelLayer->leavedStoneLabel->setString(CCString::createWithFormat("%s: %d",LeavedStoneNum, _gameScene->_panelLayer->leavedStoneNum)->getCString());    CCDirector::sharedDirector()->resume();}CCLog("jobj  end");}  }   #endif}

0 0
原创粉丝点击