XCTest.framework构建错误

use*_*123 34 iphone xcode frameworks build objective-c

我在我的应用程序中使用DropBox Core API,因此,我必须包含XCTest框架,因为,当我没有添加XCTest框架时,我的应用程序无法连接到Dropbox,但是当我添加框架时,我在为模拟器构建时出错.我的代码没有错!这是错误:

Ld /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator/SnapDrop!.app/SnapDrop! normal i386
    cd "/Users/Zach/Desktop/SnapDrop!"
    setenv IPHONEOS_DEPLOYMENT_TARGET 6.1
    setenv PATH "/Applications/Xcode5-DP6.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode5-DP6.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode5-DP6.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode5-DP6.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -L/Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator -F/Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator -F/Users/Zach/Downloads/dropbox-ios-sdk-1.3.5 -F/Users/Zach/Downloads/dropbox-ios-sync-sdk-1-1.1.0 -F/Applications/Xcode5-DP6.app/Contents/Developer/Library/Frameworks -F/Users/Zach/Desktop -filelist /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Intermediates/SnapDrop!.build/Debug-iphonesimulator/SnapDrop!.build/Objects-normal/i386/SnapDrop!.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=6.1 -framework iAd -framework AssetsLibrary -framework QuartzCore -framework SystemConfiguration -framework Security -framework CFNetwork -framework XCTest -framework Dropbox -framework DropboxSDK -framework CoreGraphics -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Intermediates/SnapDrop!.build/Debug-iphonesimulator/SnapDrop!.build/Objects-normal/i386/SnapDrop!_dependency_info.dat -o /Users/Zach/Library/Developer/Xcode/DerivedData/SnapDrop!-fchnxyvnqyeefscfhmohrzxtiqeb/Build/Products/Debug-iphonesimulator/SnapDrop!.app/SnapDrop!

ld: building for iOS Simulator, but linking against dylib built for MacOSX file '/Applications/Xcode5-DP6.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest' for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?如果我的框架已损坏,您能告诉我如何重新安装它吗?我试过删除并重新安装Xcode没有运气.

Ray*_*Fix 51

我同意迈克韦勒的观点.您可能不应该在实际的应用程序代码中链接XCTest框架.删除XCTest框架.查看链接器错误并删除引用该框架的内容.洗涤,冲洗,重复.

如果您有测试目标,那就不同了.从SenTestKit迁移到XCTest期间容易发生的事情是使用错误的框架搜索路径导致与Mac OS X框架而不是iOS框架的链接.这不起作用.

查看正确的框架搜索路径设置的简单方法是创建虚拟项目,打开测试目标的构建设置,然后过滤"框架搜索路径".

我认为正确的香草路径是:

$(SDKROOT)/Developer/Library/Frameworks     (non-recursive)
$(inherited)                                (non-recursive)
$(DEVELOPER_FRAMEWORKS_DIR)                 (non-recursive)
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用.上面显示的路径对于iOS 7来说显然是正确的.迁移(或者其他可能的东西)将第一条路径设置为"$(SDKROOT)/ Developer/Library/Frameworks",包括引号.删除引号和反斜杠是必要的. (7认同)
  • 重构"转换为XCTest ..."肯定会破坏我的框架搜索路径(Xcode 5.0).我不得不编辑一些看起来像这样的路径:`\"$(SDKROOT)/ Developer/Library/Frameworks \"`来删除虚假的反斜杠. (2认同)

Web*_*ion 9

添加到此问题的可能解决方案:

确保您没有
在项目的非测试目标"编译源"列表中包含MyApplicationTests.m文件.

例如,当您清理磁盘上的文件夹
并手动移动文件时,就会发生这种情况.

Project > Targets > MyApplication > Build Phases > Compile Sources
Run Code Online (Sandbox Code Playgroud)

最明显的症状是,
当您尝试在iPhone(或模拟器)上运行应用程序时,您会收到XCTest错误.

XCTest也不应包含在常规应用程序代码中,如
其他答案中所述.