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

时间:2014-04-19 14:23:59

标签: c++ ios xcode linker cocos2d-x

我在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);
};

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

现在,问题是:当我在主菜单场景中调用s()函数时(例如Utils::s().width),我收到此错误"链接器命令失败,退出代码为1(使用-v来查看调用)"和"未找到架构i386"的符号。但是,当我从Utils.cpp中删除s()函数定义时,只是在头文件中添加了类中的函数,使其成为

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

编译没有错误...

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

谢谢! :)

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

1 个答案:

答案 0 :(得分:0)

请注意,当您在一个文件(例如Cpp)中声明了一个函数而不是在.h文件中时,也会出现此类错误。 我见过的最常见的原因是因为一个人在.h文件中声明了一个函数但忘了给出实现。