XCTest为testing目标Xcode 5构build错误:
我已经为unit testingbuild立了一个XCode 5 iOS 7项目。
当然,进行unit testing的时间长了很多,所以我试图坚信这是值得的。 在这个错误上挣扎数小时:
ld: building for iOS Simulator, but linking against dylib built for MacOSX file '/Applications/Xcode5-DP5.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest' for architecture i386
任何想法如何解决?
在您的testing目标设置中检查您的框架searchpath。 这些在添加XCTest框架时可能会损坏。
将XCTest添加到我的项目之一前面加了一个“/”的path,导致他们找不到正确的版本。
上面的答案都没有为我工作。 我在Tim Macfarlane留下的评论中find了答案。
对于在您的应用程序中寻找类的链接器错误…在您的应用程序目标中设置“默认情况下的符号”构build设置为“否”。 这使得您的所有应用程序类自动可用于您的testing目标…
所以,这意味着:
- 项目导航>select您的项目
- 目标>select你的应用(不是testing)
- 构build设置>search“默认隐藏的符号”
- “默认隐藏的符号”>将其从“是”更改为“否”
我遇到过同样的问题; 这个问题(至less对我来说)是FRAMEWORKS_SEARCH_PATHS
构build设置在主开发者框架文件夹之后列出了SDK框架文件夹。
Xcode包含的框架有三个单独的版本:一个用于OS X,一个用于iOS(设备),另一个用于iOS模拟器。 OS X版本位于主开发者文件夹中,另外两个位于各自的平台文件夹下。 这里的问题是,如果你没有指定首先searchSDK文件夹(在平台文件夹内),Xcode(或者更准确地说,链接器)会先findOS X版本,并产生你看到的错误。
解决办法很简单,把:
FRAMEWORK_SEARCH_PATHS = $(SDKROOT)/Developer/Library/Frameworks $(inherited)
在您的构build设置。 如果您将构build设置放在项目文件中(我不推荐它,但这是另一个问题),它只是名为“框架searchpath”。
注意:有时Xcode有点慢, 你可能需要删除你的生成文件夹(比干净更好),这样才能生效。
将testing从SenTestCase转换为XCTestCase后,也有同样的问题。 恢复框架目录修复问题:
"$(SDKROOT)/Developer/Library/Frameworks" (non-recursive) "$(DEVELOPER_LIBRARY_DIR)/Frameworks" (non-recursive)
所以,对于我来说,在这篇文章中尝试其他所有东西后,我错过了:
其他链接器标志:
-framework XCTest
我正在使用Xcode 6.0(与iOS 8 SDK),所以我很惊讶,“编辑>重构>转换为XCTest …”选项不会自动添加此。
我在xcode 5中添加sentestingkit框架时遇到了问题。 这些设置用于解决链接器问题。
添加另一个文件进行testing时,我遇到了这个问题。 如果你这样做(CMD + N),一定要只针对testing包(即'AppNameTests')。
我猜只有这些.xctest包才能访问XCTest框架。
重命名我的目标名称并移动它之后,我遇到了同样的问题。 原来,我的testing是我的主要目标的一部分。 确保你所有的testing文件只属于你的testing目标。
只需select一个.m文件,确保您打开了正确的窗格。
当试图使用7.0以前版本的SDK构build基于XCTTest的unit testing时,我遇到了同样的问题。 当我select7.0作为我的基础SDK,那种链接错误消失了。
有一个相同的问题,但结束了一个稍微不同的解决scheme。
selectXCTest.framework并确保只有您的testing文件夹在Target Membership下被选中。
确保YourProjectTests
目标的search框架path( FRAMEWORK_SEARCH_PATHS
)包含path$(SDKROOT)/Developer/Library/Frameworks
,并且此path在$(inherited)
之前列出。
就我而言,两条路都存在,但是$(inherited)
是第一条。
在Apple Mach-O链接器(id)警告:构build为MacOSX,但链接与为iOS构build的dylib链接到https://stackoverflow.com/users/181947/brian-clear