Cocos2D-X链接器错误;我错过了什么

Cocos2D-X Linker Error; what am I missing?

本文关键字:错过了 什么 错误 链接 Cocos2D-X      更新时间:2023-10-16

我正在学习XCode 5上iOS版的Cocos2D-X教程,讲师首先创建了一堆类和头文件。其中有一个名为"Utils.h"的头文件,其中包含一些静态函数

class Utils
{
public:
    static Game* gameLayer();
    static HUD* hudLayer();
    static cocos2d::CCLayer* layerWithTag(int tag);
    static cocos2d::CCSize s();
    static cocos2d::CCAnimate* getAnimationWithFrames(int from, int to);
    static void scaleSprite(cocos2d::CCSprite * sprite);
    static float getScale();
    static void setScale(float s);
    static float getArtScaleFactor();
    static void setArtScaleFactor(int s);
};

在Utils.cpp中将s()函数定义为仅return CCDirector::sharedDirector()->getWinSize();

现在,问题是:当在我的主菜单场景(例如Utils::s().width)中调用s()函数时,我会得到以下错误:"Linker命令失败,退出代码为1(使用-v查看调用)"answers"找不到体系结构i386的符号"。然而,当我从Utils.cpp中删除s()函数定义,并在头文件中的类中添加该函数,使其成为时

//Utils.h
class Utils
{
public:
     .......
     static cocos2d::CCSize s()
     {
         return CCDirector::sharedDirector()->getWinSize();
     }
     ......

它编译时没有出现错误。。。

当函数在cpp文件中而不是头文件中时,为什么会出现此错误?我知道我的问题已经解决了,但它只是让我发疯

谢谢!:)

编辑:我认为这是一个既定的,但更清楚地说,在主菜单场景中,我包括了Utils.h,而不是Utils.cpp

请注意,当您在一个文件(比如Cpp)中而不是在.h文件中声明函数时,也会出现这样的错误。我看到的最常见的原因是在.h文件中声明了一个函数,但忘记了给出实现。

相关文章: