gpt4 book ai didi

c++ - 代码无法使用 Android NDK 编译

转载 作者:行者123 更新时间:2023-11-28 00:57:32 26 4
gpt4 key购买 nike

Cocos2d-x 是 Cocos2d-for-iPhone 的 C++ 端口。它具有跨平台的优势。我正在使用 Cocos2d-x 为 Android 和 iPhone 开发游戏。

现在我正在使用 Android NDK 和 Xcode 编译一组 Cocos2d-X 代码。

游戏在 Xcode 上编译并在 iPhone 上运行良好。

使用 Android NDK,编译会失败。 (我使用的是官方的 Android r7c NDK)。

请帮忙。

enter image description here

编辑:对于那些对完整的实现文件感兴趣的人。在这里。

#include "GameOverScene.h"
#include "HelloWorldScene.h"

using namespace cocos2d;

bool GameOverScene::init() {
if (CCScene::init()) {
this->_layer = GameOverLayer::node();
this->_layer->retain();
this->addChild(_layer);

return true;
} else {
return false;
}
}

GameOverScene::~GameOverScene () {
if (_layer) {
_layer->release();
_layer = NULL;
}
}

bool GameOverLayer::init () {
if (CCLayerColor::initWithColor(ccc4f(255, 255, 255, 255))) {
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
this->_label = CCLabelTTF::labelWithString("", "Artial", 32);
_label->retain();
_label->setColor(ccc3(0, 0, 0));
_label->setPosition(ccp(winSize.width/2, winSize.height/2));
this->addChild(_label);

this->runAction(CCSequence::actions(CCDelayTime::actionWithDuration(3), CCCallFunc::actionWithTarget(this, callfunc_selector(GameOverLayer::gameOverDone)), NULL));

return true;
} else {
return false;
}
}

void GameOverLayer::gameOverDone() {
CCDirector::sharedDirector()->replaceScene(HelloWorld::scene());
}

GameOverLayer::~GameOverLayer() {
if (_label) {
_label->release();
_label = NULL;
}
}

以及完整的头文件

#ifndef S6_GameOverScene_h
#define S6_GameOverScene_h

#include "cocos2d.h"

class GameOverLayer : public cocos2d::CCLayerColor {

public:
GameOverLayer():_label(NULL) {};
virtual ~GameOverLayer();
bool init();
LAYER_NODE_FUNC(GameOverLayer);

void gameOverDone();

CC_SYNTHESIZE_READONLY(cocos2d::CCLabelTTF*, _label, Label);

};

class GameOverScene : public cocos2d::CCScene {

public:
GameOverScene():_layer(NULL) {};
~GameOverScene();
bool init();

//SCENE_NODE_FUNC(GameOverScene);

static GameOverScene* node()
{
GameOverScene *pRet = new GameOverScene();

//Error: undefined reference to `GameOverScene::init()'
if (pRet && pRet->init())
{
pRet->autorelease();
return pRet;
}
else
{
//Error: undefined reference to `vtable for GameOverScene'
delete pRet;

pRet = NULL;
return NULL;
}
};

CC_SYNTHESIZE_READONLY(GameOverLayer*, _layer, Layer);
};


#endif

最佳答案

这可能是 Android.mk 文件的问题。您需要添加 GameOverScene.h 文件进行编译。

关于c++ - 代码无法使用 Android NDK 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10283318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com