我在Xcode 6.1中将一个单元测试目标添加到现有项目中。如果我做一个简单的测试,如
XCTestAssert(1 + 1 == 2, @"Addition");
它构建并且工作正常。当我尝试使用目标应用程序中的任何类时,我收到链接器错误。我无法弄清楚如何正确链接它。这两个目标都是针对相同的架构构建的。我尝试设置一个新项目,我可以使用目标应用程序中的类。我可能错过了一些简单的事情,但我无法弄清楚它是什么,而且在搜索其他解决方案时我找不到任何有用的东西。
我得到的错误是
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_NoteManager", referenced from:
objc-class-ref in ESV_Tests.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
NoteManager
是我要测试的课程。
谢谢
答案 0 :(得分:2)
您应该检查主目标中的剥离和隐藏符号设置。链接器在-bundle_loader选项中从应用程序二进制文件(Application.app/Application)中读取您的类。您可以通过以下命令检查符号:
nm <path to Application.app/Application> | grep NoteManager
我还建议您在设置更改后重建项目
答案 1 :(得分:1)
所以我找到了解决方案。在我的目标应用程序(不是测试目标)中,我需要将“默认隐藏的符号”标志设置为NO。