我有一个带有常规目标和单元测试目标的XCode4 / iOS项目。一切正常,除非我尝试#import我的测试类中的一个类并尝试使用它。如果我尝试构建单元测试目标,则会出现以下链接错误:
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_FRRCategory", referenced from:
objc-class-ref in CategoryTests.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
在CategoryTests.m中我以这种方式导入头文件:
#import "../todoro/FRRCategory.h"
我做错了什么?
答案 0 :(得分:165)
答案 1 :(得分:22)
确保已将FRRCategory源文件添加到您的单元测试目标的编译源中。
Xcode 4:
Project Navigator - > “[项目名称]” - >在目标下选择您的单元测试目标 - >构建阶段 - >展开编译源 - >单击编译源底部的+,然后添加正确的源文件。
答案 2 :(得分:7)
你可能遇到的另一个问题是你的单元测试是否使用了在实际应用中没有使用的C函数(或类似函数)。
这可能仅限于拥有子项目。在我的情况下
我的单元测试使用了一些其他地方没有使用过的C函数,这些函数从app二进制文件中删除(不是从子项目的.a文件中删除)。
修复是
(*不要对发布配置执行此操作,因为它会使用从未调用过的代码使应用程序膨胀。)
答案 3 :(得分:1)
如果您的文件位于框架内,则只应引用导入中的文件夹。否则,将文件添加到项目后,只需执行#import "FRRCategory.h"
即可。好吧,除非你对你的标题搜索路径做了一些奇怪的事情。