我有一个使用XCode4和Storyboards的iPad应用程序,该应用程序具有一个Tab Bar控制器和两个UIView(其中一个是KalCalendarController),它们都在工作区中。我已经添加了Kal,所以现在我在工作区中有两个项目。当我从Kal文档中添加两行示例代码时,出现此错误:

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


这是两行代码:

KalViewController *calendar = [[KalViewController alloc] init];
[self.navigationController pushViewController: calendar animated:YES];


我已经查看了几乎所有的SO问题中的“找不到符号...”,但这些问题都不适用于这种特殊情况。我可以使用Kal示例,但不能在工作区中使用。我已经检查了链接器设置,它们似乎是正确的。我应该在哪里检查解决此问题?

最佳答案

假设您已正确链接并包含框架/库,则一个问题可能是Kal项目的目标设置在“构建设置”选项卡下的“体系结构”设置中未包含正确的平台。

根据上面的第一条评论,您也可能根本没有链接/添加Kal。仅将其拖到工作区中是不够的。您需要从主应用程序链接到它(您可以在“摘要”标签下为应用程序的目标设置执行此操作)。

这依赖于Xcode对依赖关系的“自动”检测,这种检测并不总是如所宣传的那样工作。在这种情况下,您可能需要在主应用程序的方案中关闭自动依赖项,并在方案的Build设置下手动设置依赖项,以便先构建Kal,然后再构建您的应用程序。

关于ios - 带有Kal和其他1个项目的工作区将不会生成(i386的 undefined symbol ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10949918/

10-09 16:00