0

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

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)我没有在我的构建设置中正确包含必要的库。首先,我检查了我的标题,它们看起来很好。我只在我的 HelloWorldLayer.h 文件中 #imported CCMenuAdvanced.h 文件。其次,它是一个 Cocos2D 模板,无需上述代码行即可正常工作,所以我认为所有必要的库都应该已经包含在内。

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

4

1 回答 1

1

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

在此处输入图像描述

于 2012-11-14T00:02:43.137 回答