Cocos2D-X compile Linux Error: Undefined Reference

Cocos2D-X compile Linux Error: Undefined Reference

本文关键字:Undefined Reference Error compile Linux Cocos2D-X      更新时间:2023-10-16

我是cocos2D-X (v 3.6)的新手,我使用Linux来编译和运行我的项目。当我尝试以下命令行时:

cocos compile -p linux

显示错误:

Linking CXX executable bin/MyGame
CMakeFiles/MyGame.dir/Classes/AppDelegate.cpp.o: In function `AppDelegate::applicationDidFinishLaunching()':
/home/caisar/MyCompany/MyGame/Classes/AppDelegate.cpp:53: undefined reference to `GraphicsScene::createScene()'
collect2: error: ld returned 1 exit status
make[2]: *** [bin/MyGame] Error 1
make[1]: *** [CMakeFiles/MyGame.dir/all] Error 2
make: *** [all] Error 2
Error running command, return code: 2

这是我的GraphicsScene.h:

#ifndef __GRAPHICS_SCENE_H__
#define __GRAPHICS_SCENE_H__
#include "cocos2d.h"
class GraphicsScene : public cocos2d::Layer{
public:
    static cocos2d::Scene* createScene();
    virtual bool init();
    void menuCloseCallback(cocos2d::Ref* pSender);
    CREATE_FUNC(GraphicsScene);
};
#endif

这是GraphicsScene.cpp:

#include "GraphicsScene.h"
USING_NS_CC;
Scene* GraphicsScene::createScene(){
    auto scene = Scene::create();
    auto layer = GraphicsScene::create();
    scene->addChild(layer);
    return scene;
}
bool GraphicsScene::init(){
    if(!Layer::init()){
        return false;
    }
    auto sprite = Sprite::create("autobot.png");
    sprite->setPosition(0,0);
    this->addChild(sprite, 0);
    return true;
}
void GraphicsScene::menuCloseCallback(Ref* pSender)
{
    Director::getInstance()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}

还有什么需要补充的吗?

我今天也有这个问题,并通过编辑PROJECT_PATH/CMakeLists.txt文件解决了这个问题。必须在GAME_SRCGAME_HEADERS部分中包含*.cpp和*.h文件路径。例如,在您的例子中,它必须是这样的:

set(GAME_SRC
  Classes/AppDelegate.cpp
  Classes/HelloWorld.cpp
  Classes/GraphicsScene.cpp
  ${PLATFORM_SPECIFIC_SRC}
)
set(GAME_HEADERS
  Classes/AppDelegate.h
  Classes/HelloWorld.h
  Classes/GraphicsScene.h
  ${PLATFORM_SPECIFIC_HEADERS}
)

希望它能工作!

我猜链接器没有找到GraphicsScene::createScene()的.cpp源文件。你应该将GraphicsScene.cpp添加到Android。可文件。就像我为我的windows项目做的那样。

LOCAL_SRC_FILES:= hellocpp/main.cpp

              ../../Classes/Graphic_Image.cpp 

希望有帮助。谢谢。