34

我在我的应用程序中使用 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,但没有成功。

4

9 回答 9

51

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

如果你有一个测试目标,那就不同了。在从 SenTestKit 迁移到 XCTest 的过程中很容易发生的情况是框架搜索路径错误,这会导致链接到 Mac OS X 框架而不是 iOS 框架。这行不通。

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

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

$(SDKROOT)/Developer/Library/Frameworks     (non-recursive)
$(inherited)                                (non-recursive)
$(DEVELOPER_FRAMEWORKS_DIR)                 (non-recursive)
于 2013-09-20T06:20:26.167 回答
9

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

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

例如,当您清理磁盘上的文件夹
并手动移动内容时,可能会发生这种情况。

Project > Targets > MyApplication > Build Phases > Compile Sources

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


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

于 2014-01-24T10:26:09.997 回答
2

我刚刚从 Project Navigator > Targets > 'Project Name' > Build Phases 中删除了“XCTest.Framework”文件。然后,“产品”(下拉菜单)> 清洁。为我做的!

于 2014-01-17T17:31:58.513 回答
1

If you have a test target, you should also make sure that its Base SDK is set to iOS 7.0 (or even better: Latest iOS)

于 2013-10-24T09:18:24.973 回答
1

我应该补充一点:

我的项目所有路径都正确(这三个默认路径),但顺序不同。设置正确的顺序(通过在列表中用鼠标拖动路径)解决了这个问题。

于 2013-11-11T10:18:43.017 回答
0

以上都不适合我,我仍然得到错误,

ld:警告:自动链接提供的“/Applications/Xcode.app/Contents/Developer/Library/Frameworks/XCTest.framework/XCTest”,文件/Applications/Xcode.app/Contents/Developer/Library/中缺少所需的架构i386 Frameworks/XCTest.framework/XCTest(2片)

我使用了 XCode 6 的重构选项,将我正常运行的 SenTests 转换为 XCTests。

但是,当我将框架搜索路径设置为

$(SDKROOT)/Developer/Library/Frameworks and 
$(inherited)

有效。

于 2014-11-06T14:00:28.397 回答
0

检查您的主要目标和测试目标的框架搜索路径。我有很多废话

最简单的方法是创建一个新的单视图 ios 项目。运行测试以查看它是否可以运行 - 默认情况下它会失败,然后检查主目标和测试目标中的 Framework Searhc 路径。并将其与您的项目进行比较

看看我的回答 brian.clear here

Apple Mach-O 链接器(id)警告:为 MacOSX 构建,但链接到为 iOS 构建的 dylib

于 2013-11-07T15:51:46.347 回答
0

您可以创建您的框架项目,这将是一个没有测试文件的 pod 项目。在创建项目时简单地取消选中测试。

于 2016-07-01T08:12:48.927 回答
0

这可能是一个原因:

如果您在两个目标“MyApplication”和“MyApplicationTests”中链接了 XCTest 框架。然后我们需要将“MyApplicationTests”文件中的“MyApplication”导入为

@testable import FlickrDemo

所以它会创建循环导入并导致 XCTest framework not found 问题。简单的解决方案是从“MyApplication”目标中删除 XCTest 框架。

希望这会对某人有所帮助。

于 2019-04-16T17:17:04.147 回答