Cocos2D,CCMenuAdvanced实现错误:“_ OBJC_CLASS _ $ _ CCMenuAdvanced”链接器命令失败,退出代码为1

时间:2012-11-13 20:50:30

标签: cocos2d-iphone clang xcode4.5

确定。我正在开始一个新的Cocos2D模板,试图弄清楚CCMenuAdvanced是如何工作的。从没有物理的Cocos2D 2.1 b2项目开始,将CCMenuAdvanced.h和CCMenuAdvanced.m文件添加到我的项目中,从HelloWorldLayer.m init方法中删除了样板代码,一切运行正常。黑屏。在我看来,就像我应该导入所有库一样,当我键入与CCMenuAdvance有关的任何内容时,它会自动完成,因此看起来工作正常。以下是我在HelloWorldLayer init方法中的所有内容:

CCMenuItemImage *scrollableSprite = [CCMenuItemImage itemWithNormalImage:@"640x2272ScrollableImage.png"
                                                    selectedImage:@"640x2272ScrollableImage.png"
                                                           target:self
                                                         selector:@selector(iDunnoYet)];

正如预期的那样,它会编译并运行一个未使用的变量'sprite'警告,但运行正常。一旦我将这行代码添加到项目中,期望得到另一个未使用的变量错误(菜单):

CCMenuAdvanced *menu = [CCMenuAdvanced menuWithItems:scrollableSprite, nil];

我收到此错误:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_CCMenuAdvanced", referenced from:
      objc-class-ref in HelloWorldLayer.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经注释掉了这一行,它再次构建并运行良好。我已经阅读了两个可能引发此错误的不同内容:1)我在项目中导入了两次文件或库,以及2)我没有在构建设置中正确包含必要的库。首先,我检查了我的标题,看起来很好。我只在#WiaWorldLayer.h文件中#imported CCMenuAdvanced.h文件。第二,它是一个Cocos2D模板,没有上面提到的代码行,所以我认为所有必要的库都应该已经包含在内了。

无论如何,如果有人能指出我正确的方向,我会很感激。提前致谢。当然,如果需要,我可以提供更多代码。

1 个答案:

答案 0 :(得分:1)

验证CCMenuAdvanced.m是否已添加到项目的目标中。选择文件,打开“实用工具”视图并查看文件的目标成员身份。文件旁边应该有一个复选框。像这样:

enter image description here