Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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
Cocos2dx 3.0失败..build_native.py(构建到Android)_Android_Java Native Interface_Cocos2d X_Cocos2d X 3.0 - Fatal编程技术网

Cocos2dx 3.0失败..build_native.py(构建到Android)

Cocos2dx 3.0失败..build_native.py(构建到Android),android,java-native-interface,cocos2d-x,cocos2d-x-3.0,Android,Java Native Interface,Cocos2d X,Cocos2d X 3.0,cpp #包括“HelloWorldScene.h” 使用\u NS\u CC; #如果(CC_目标_平台==CC_平台_ANDROID) #包括 #包括 外行 “C” { JNIEXPORT jint JNICALL Java_org_cocos2dx_cpp_AppActivity_cppSum(JNIEnv*env,jobject obj) { MessageBox(“从Java11调用我”、“JNITest11”); HelloWorld::doFiring();//我不想执行。。。。。

cpp

#包括“HelloWorldScene.h”
使用\u NS\u CC;
#如果(CC_目标_平台==CC_平台_ANDROID)
#包括
#包括
外行
“C”
{
JNIEXPORT jint JNICALL Java_org_cocos2dx_cpp_AppActivity_cppSum(JNIEnv*env,jobject obj)
{
MessageBox(“从Java11调用我”、“JNITest11”);
HelloWorld::doFiring();//我不想执行。。。。。
日志(“CCCCCC”);
返回121;
}
}
#恩迪夫
场景*HelloWorld::CreateSecene()
{
自动场景=场景::创建();
自动图层=HelloWorld::create();
场景->添加子对象(层);
返回场景;
}
bool HelloWorld::init()
{
如果(!Layer::init())
{
返回false;
}
返回true;
}
void HelloWorld::doFiring()
{
MessageBox(“从Java11调用我”、“JNITest11”);
}
生成此页面。。 错误消息:

[armeabi]Compile++thumb:cocos2dcpp_sharedHelloWorld::doFiring()不是静态函数。 你可以打电话 Director::getInstance()->getRunningScene(); 为了得到现场,于是找到了有做消防功能的孩子。 也许您的代码应该是:

#include "HelloWorldScene.h"

USING_NS_CC;

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <string.h>
#include <jni.h>
extern
"C"
{
    JNIEXPORT jint JNICALL Java_org_cocos2dx_cpp_AppActivity_cppSum(JNIEnv* env, jobject obj)
    {
        MessageBox( "Call me From Java11", "JNI Test11" );

        HelloWorld::doFiring(); //I wan't excute.....
        log("CCCCCCCCCCC");
        return 121;
    }
}
#endif

Scene* HelloWorld::createScene()
{
    auto scene = Scene::create();   
    auto layer = HelloWorld::create();
    scene->addChild(layer);
    return scene;
}

bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    return true;
}

void HelloWorld::doFiring()
{
    MessageBox( "Call me From Java11", "JNI Test11" );
}
auto children=Director::getInstance()->getRunningScene()->getChildren();
用于(自动子对象:子对象)
{
自动图层=动态投影(子级);
如果(层){
layer.doFiring();
}
}

听起来doFiring不是声明为静态的,而是一个成员函数,但您可以像调用静态类方法一样调用它:HelloWorld::doFiring()
auto children = Director::getInstance()->getRunningScene()->getChildren();
for(auto child:children)
{
    auto layer = dynamic_cast<HelloWorld*>(child);
    if (layer) {
        layer.doFiring();
    }
}