Ошибка Cocos2dx 3.0 ..build_native.py (сборка для Android)

cpp

#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" );
}

Построить на этой странице.. Сообщение об ошибке:

[armeabi] Compile++ thumb: cocos2dcpp_shared ‹= HelloWorldScene.cpp jni/../../Classes/HelloWorldScene.cpp: В функции 'jint Java_org_cocos2dx_cpp_AppActivity_cppSum(JNIEnv*, jobject)': jni/../../Classes/HelloWorldScene .cpp:19:24: ошибка: невозможно вызвать функцию-член 'void HelloWorld::doFiring()' без объекта HelloWorld::doFiring(); ^ make.exe: * [obj/local/armeabi/objs/cocos2dcpp_shared///Classes/HelloWorldScene.o] Ошибка 1

.


person user3800505    schedule 03.07.2014    source источник
comment
похоже, что doFiring не объявлен статическим, а является функцией-членом, но вы вызываете его как метод статического класса: HelloWorld::doFiring()   -  person LearnCocos2D    schedule 03.07.2014


Ответы (1)


HelloWorld::doFiring() не является статической функцией. вы можете вызвать Director::getInstance()->getRunningScene(); чтобы получить сцену, затем нашел ребенка, у которого есть функция огня. возможно, ваш код должен понравиться:

auto children = Director::getInstance()->getRunningScene()->getChildren();
for(auto child:children)
{
    auto layer = dynamic_cast<HelloWorld*>(child);
    if (layer) {
        layer.doFiring();
    }
}
person SongYang    schedule 20.07.2014