对 'MainScene::createScene()' collect2 的未定义引用:错误
undefined reference to 'MainScene::createScene()' collect2: error
我收到以下错误,但我的代码应该没有问题。因为我已经声明了 createScene 方法。如果有一些技巧或提示可以解决这个问题,那就太好了!
AppDelegate.cpp:82: error: undefined reference to 'MainScene::createScene()'
collect2: error: ld returned 1 exit status
AppDelegate.cpp:82: 这是错误发生的地方
// create a scene. it's an autorelease object
auto scene = MainScene::createScene();
这是MainScene.cpp
#include "MainScene.h"
USING_NS_CC; //Means using cocos2d
MainScene::MainScene() {
}
MainScene::~MainScene() {
}
Scene* MainScene::createScene() {
auto scene = Scene::create();
auto layer = MainScene::create();
scene->addChild(layer);
return scene;
}
bool init() {
if (!Layer::init()) {
return false;
}
auto director = Director::getInstance();
auto size = director->getWinSize();
auto background = Sprite::create("background.png");
background->setPosition(Vec2(size.width/2.0, size.height / 2.0));
this->addChild(background);
//initialize process
return true;
}
这是MainScene.h
class MainScene: public cocos2d::Layer
{
protected:
MainScene();
virtual ~MainScene();
bool init() override;
public:
static cocos2d::Scene* createScene();
CREATE_FUNC(MainScene);
};
我想你忘了定义 MainScene
class
的 init()
方法
bool init() {
...
...
}
改为
bool MainScene::init(){
...
...
}
我收到以下错误,但我的代码应该没有问题。因为我已经声明了 createScene 方法。如果有一些技巧或提示可以解决这个问题,那就太好了!
AppDelegate.cpp:82: error: undefined reference to 'MainScene::createScene()'
collect2: error: ld returned 1 exit status
AppDelegate.cpp:82: 这是错误发生的地方
// create a scene. it's an autorelease object
auto scene = MainScene::createScene();
这是MainScene.cpp
#include "MainScene.h"
USING_NS_CC; //Means using cocos2d
MainScene::MainScene() {
}
MainScene::~MainScene() {
}
Scene* MainScene::createScene() {
auto scene = Scene::create();
auto layer = MainScene::create();
scene->addChild(layer);
return scene;
}
bool init() {
if (!Layer::init()) {
return false;
}
auto director = Director::getInstance();
auto size = director->getWinSize();
auto background = Sprite::create("background.png");
background->setPosition(Vec2(size.width/2.0, size.height / 2.0));
this->addChild(background);
//initialize process
return true;
}
这是MainScene.h
class MainScene: public cocos2d::Layer
{
protected:
MainScene();
virtual ~MainScene();
bool init() override;
public:
static cocos2d::Scene* createScene();
CREATE_FUNC(MainScene);
};
我想你忘了定义 MainScene
class
init()
方法
bool init() {
...
...
}
改为
bool MainScene::init(){
...
...
}