Kal和其他1个项目的工作区将无法构建(i386的未定义符号)

时间:2012-06-08 13:36:21

标签: ios xcode4 workspace

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

    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示例工作,但不能在工作区中工作。我检查了链接器设置,它们似乎是正确的。我应该在哪里检查解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

根据您上面的第一条评论,您也可能没有链接/包含Kal。仅将其拖入工作空间是不够的。您需要从主应用程序链接到它(您可以在应用程序的目标设置的摘要选项卡下执行此操作)。

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