对 '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(){
    ...
    ...  
}