39

我在 Xcode 5.0.2 中运行项目时遇到问题

我收到以下错误:

dyld: Library not loaded: @rpath/XCTest.framework/Versions/A/XCTest
  Referenced from: /Users/chris/Library/Developer/Xcode/DerivedData/relatio-cwlmozvklaldmictbbjthzuoxnxz/Build/Products/Debug/relatio.app/Contents/MacOS/relatio

原因:找不到图像(lldb)

我该如何解决这个问题?

4

15 回答 15

28

看起来您的主要目标正在链接到 XCTest.framework 以及您的测试目标。它应该只链接到主要目标。

1) 进入项目设置

2) 转到您的应用程序主要目标 -> 其他链接器标志

3)删除'-framework XCTest'

4) 确保您的测试目标的“其他链接器标志”字段仍然包含“-framework XCTest”

于 2014-08-11T21:02:23.650 回答
19

我通过重命名我的目标(其中一个是测试目标)遇到了这个错误。在阅读了其他答案后,我意识到我的 Build Phases > Compile Sources将测试类作为非测试目标的编译源包含在内,然后尝试导入 XCTest 框架。

从我的常规目标的编译源中删除测试类解决了这个问题。

于 2014-07-04T15:26:03.783 回答
10

我以这种方式解决了这个问题。我已经编辑了方案,在“构建”选项卡上勾选了“运行”。

在此处输入图像描述

于 2016-08-31T10:52:50.807 回答
8

这里的问题是,根据您发布的 dyld 错误消息,您的应用程序链接到 XCTest.framework。这是不正确的;只有您的测试包需要链接到 XCTest.framework,因为只有您的测试包包含测试。

于 2014-01-01T19:07:30.657 回答
6

我对 OCMock 库有类似的问题,解决方案是:

target :"Application Tests", :exclusive => true do
    pod 'OCMock'
end
于 2014-09-30T08:35:04.117 回答
5

就我而言,这是 Swift Package Manager 添加到主应用程序目标的 RxTests。在 pod 中,您决定将哪些 Rx 组件添加到哪个目标,但 SPM 默认将其全部添加到主目标。

于 2020-01-15T20:43:15.337 回答
4

这就是我解决问题的方法:

  1. 导航到项目的“构建设置”
  2. 搜索“运行路径搜索路径”
  3. 在产品名称下方的栏中输入以下路径:/Applications/Xcode.app/Contents/Developer/Library/Frameworks/
于 2013-12-04T21:23:55.570 回答
2

在我的主要目标的“使用库链接二进制文件”(在构建阶段下)中,是我使用的测试框架(Nimble.framework)导致了问题。删除它,一切都很好!

于 2016-03-05T13:39:43.570 回答
1

在框架搜索路径上输入框架的引用并在“构建设置”下运行路径搜索路径---...现在全部设置为使用导入调用您的项目

于 2015-08-31T15:37:45.147 回答
1

我有同样的问题是因为我在框架中添加了一个新文件。所以只需运行“ pod install”即可解决我的问题。但请确保您的 podTests也在目标之下。

于 2015-12-25T03:17:54.513 回答
0

转到常规 > 目标(左侧)。

您可能有第二个项目包含单词 test/s。点击它。

在此常规设置 > 测试 > 主机应用程序 > 从选项中选择(您的应用程序名称)。而已!

于 2020-09-27T02:08:21.953 回答
0

仅针对那些提出相同问题的人:

检查必须看起来像这样的横向右侧菜单:

应该

并且不必看起来像那样

不应该

于 2018-12-04T14:55:21.193 回答
0

一个对我有用的解决方案是将 Podfile 中的测试目标inherit属性:search_paths更改为:complete. 尽管这个答案表明它:search_paths是为测试环境设计的。

target 'myapp' do    
  use_frameworks!

  target 'myappTests' do
    #inherit! :search_paths
    inherit! :complete
  end

end
于 2019-08-07T19:03:18.870 回答
0

我通过 Carthage 使用 ios-snapshot-test-case v5.0.2 遇到了这个错误。该问题与 XCode 11 有关。Apple 重命名libswiftXCTest.dyliblibXCTestSwiftSupport.dylib并添加了XCTest.swiftmodule其中具有相同符号的符号,并且可以代替旧符号工作。但 Apple 忘记告诉 iOS 11.x 模拟器这一变化。

所以你需要修复旧的iOS版本模拟器。这是为我修复它的终端命令:

sudo zsh -c ' sourcedir="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/lib"; 
targetdir="/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS 11.4.simruntime/Contents/Resources/RuntimeRoot/usr/lib"; 
ln -s $sourcedir/libXCTestSwiftSupport.dylib $targetdir/libswiftXCTest.dylib;
ln -s $sourcedir/XCTest.swiftmodule $targetdir/XCTest.swiftmodule'

在这里查看我的评论:https ://github.com/CocoaPods/CocoaPods/issues/9165#issuecomment-573523322

于 2020-01-13T19:12:01.613 回答
0

对于我们的案例,我们希望同时Mockingjay用于应用目标和测试目标

target 'MyProject' do
  pod 'Mockingjay/Core'
  # all pods that are not test go here

  target 'MyProjectTest' do
      inherit! :search_paths
      pod 'Mockingjay/XCTest'
      pod 'Quick', ' ~> 0.9.2'
      # .. all test pods go here
  end
end
于 2019-03-02T01:09:07.487 回答