我在我的应用程序中使用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)
我该怎么办?如果我的框架已损坏,您能告诉我如何重新安装它吗?我试过删除并重新安装Xcode没有运气。
答案 0 :(得分:51)
我同意Mike Weller的观点。您可能不应该在实际的应用程序代码中链接XCTest框架。删除XCTest框架。查看链接器错误并删除引用该框架的内容。洗涤,冲洗,重复。
如果您有测试目标,那就不同了。从SenTestKit迁移到XCTest期间容易发生的事情是使用错误的框架搜索路径导致与Mac OS X框架而不是iOS框架的链接。这不起作用。
查看正确的框架搜索路径设置的简单方法是创建虚拟项目,打开测试目标的构建设置,然后过滤“框架搜索路径”。
我认为正确的香草路径是:
$(SDKROOT)/Developer/Library/Frameworks (non-recursive)
$(inherited) (non-recursive)
$(DEVELOPER_FRAMEWORKS_DIR) (non-recursive)
答案 1 :(得分:9)
为此问题添加可能的解决方案:
确保您没有包含MyApplicationTests.m文件
在项目的非测试目标“编译源”列表中。
清理磁盘上的文件夹时可能会发生这种情况 例如,手动移动东西。
Project > Targets > MyApplication > Build Phases > Compile Sources
最明显的症状是你得到了XCTest错误 当试图在iPhone(或模拟器)上运行您的应用程序时。
XCTest不应包含在您说明的常规应用程序代码中 在其他答案中也是如此。
答案 2 :(得分:2)
我刚从Project Navigator中删除了“XCTest.Framework”文件>目标> '项目名称'>建立阶段。然后,“产品”(下拉)>清洁。是给我的!
答案 3 :(得分:1)
如果您有测试目标,还应确保其Base SDK
设置为iOS 7.0
(或更好:Latest iOS
)
答案 4 :(得分:1)
我应该添加小记:
我的项目所有路径都正确(这三个默认路径),但顺序不同。设置正确的顺序(通过在列表中拖动鼠标路径)修复了问题。
答案 5 :(得分:0)
检查主要目标和测试目标的框架搜索路径。 我的手里有很多废话
最简单的方法是创建一个新的单一视图ios项目。 运行测试以查看它可以运行 - 默认情况下它会失败 然后检查main和test目标中的Framework Searhc Path。 并将其与您的项目进行比较
请看我的答案brian.clear here
Apple Mach-O linker (id) warning : building for MacOSX, but linking against dylib built for iOS
答案 6 :(得分:0)
以上都不适合我,我仍然会收到错误,
ld:警告:提供自动链接 '/Applications/Xcode.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest', 在文件中缺少必需的体系结构i386 /Applications/Xcode.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest (2片)
我使用了XCode 6的重构选项,将正确运行的SenTests转换为XCTests。
但是当我将框架搜索路径设置为时,
$(SDKROOT)/Developer/Library/Frameworks and
$(inherited)
它奏效了。
答案 7 :(得分:0)
您可以创建框架项目,该项目将是没有测试文件的pod项目。简单地在创建项目时取消选中测试。
答案 8 :(得分:0)
这可能是一个原因:
如果您在两个目标“ MyApplication”和“ MyApplicationTests”中都链接了XCTest框架。然后,我们确实需要将“ MyApplicationTests”文件中的“ MyApplication”导入为
@testable import FlickrDemo
因此它将创建循环导入,并会导致XCTest框架未找到问题。 一个简单的解决方案是从“ MyApplication”目标中删除XCTest框架。
希望这会对某人有所帮助。