Xcode 5.0.2 dyld:库未加载:@rpath/XCTest.framework/Versions/A/XCTest

Posted

技术标签:

【中文标题】Xcode 5.0.2 dyld:库未加载:@rpath/XCTest.framework/Versions/A/XCTest【英文标题】:Xcode 5.0.2 dyld: Library not loaded: @rpath/XCTest.framework/Versions/A/XCTest 【发布时间】:2013-12-01 23:05:59 【问题描述】:

我在 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)

我该如何解决这个问题?

【问题讨论】:

这就是我解决问题的方法: 1. 导航到项目的“构建设置” 2. 搜索“运行路径搜索路径” 3. 在产品名称下方的列中输入以下路径:/ Applications/Xcode.app/Contents/Developer/Library/Frameworks/ 您可以通过写答案而不是评论来回答自己的问题。 【参考方案1】:

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

1) 进入项目设置

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

3) 移除'-framework XCTest'

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

【讨论】:

我关注了这个。但没有帮助 很好的答案,但是我有 $(inherited) 从 CocoaPods 中引入数据。 除了删除之外,您还可以通过执行 -weak_framework "XCTest" 使您的框架成为可选 我没有测试目标了,我已经从应用程序中删除了它。我仍然遇到同样的错误。【参考方案2】:

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

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

【讨论】:

这个答案解决了我的问题,非常感谢你分享这个。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

我在使用 OCMock 库时遇到了类似的问题,解决方案是:

target :"Application Tests", :exclusive => true do
    pod 'OCMock'
end

【讨论】:

对于像我这样的傻瓜,如果你的应用程序被命名为MyApp,那么这里的目标是MyAppTests ... 小心,如果您执行 'exclusive => true',您将不再包含来自其他目标的任何 pod。 请注意 :exclusive 已被替换为 inherit! :search_paths。见blog.cocoapods.org/CocoaPods-1.0-Migration-Guide @LeszekZarna 当然,我在您现有的示例中添加了 post 1.0 语法。【参考方案6】:

在我的例子中,它是由 Swift 包管理器添加到主应用程序目标的 RxTests。在 pod 中,您决定将哪些 Rx 组件添加到哪个目标,但 SPM 默认将其全部添加到主目标。

【讨论】:

是的,我从主要目标中删除了它现在可以正常工作了。谢谢【参考方案7】:

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

    导航到项目的“构建设置” 搜索“运行路径搜索路径” 在产品名称下方的一栏中输入以下路径:/Applications/Xcode.app/Contents/Developer/Library/Frameworks/

【讨论】:

这在几个方面是不正确的。首先,它会导致您的应用程序依赖于 XCTedt.framework,该框架仅在 Xcode 中可用。其次,您使用的是绝对路径,不能保证从 Mac 到 Mac(例如,如果您安装了多个版本的 Xcode)。 @ChrisHanson:这确实适用于 Xcode 5.1.1。但请注意,您不需要提供绝对路径,应该提供相对路径。我的场景是,我已经使用 Xcode 6 构建了动态框架,然后我尝试在我的应用程序的 Xcode 5.1.1 中使用它,我收到了相同的问题描述here ...我尝试在“运行路径搜索路径”中给出我的动态框架的路径" 并且成功了..【参考方案8】:

在我的主要 Target 的“Link Binary With Libraries”(在 Build Phases 下)中,是我使用的测试框架 (Nimble.framework) 导致了问题。删除它,一切都很好!

【讨论】:

【参考方案9】:

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

【讨论】:

【参考方案10】:

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

【讨论】:

【参考方案11】:

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

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

而且不必看起来像那样

【讨论】:

您可能会解释这适用于所有且仅适用于您的测试文件。【参考方案12】:

对于我们的例子,我们希望将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

【讨论】:

【参考方案13】:

对我有用的解决方案是将 Podfile 中的测试目标 inherit attribute 从 :search_paths 更改为 :complete。 虽然this answer 暗示:search_paths 是为测试环境设计的。

target 'myapp' do    
  use_frameworks!

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

end

【讨论】:

【参考方案14】:

我通过 Carthage 使用 ios-snapshot-test-case v5.0.2 时遇到了这个错误。该问题与 XCode 11 有关。Apple 将 libswiftXCTest.dylib 重命名为 libXCTestSwiftSupport.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

【讨论】:

【参考方案15】:

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

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

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

【讨论】:

以上是关于Xcode 5.0.2 dyld:库未加载:@rpath/XCTest.framework/Versions/A/XCTest的主要内容,如果未能解决你的问题,请参考以下文章

dyld:库未加载 Xcode11

dyld:库未加载Xcode11

Xcode 13 dyld:库未加载:/System/Library/Frameworks/LinkPresentation.framework/LinkPresentation

dyld:库未加载...原因:找不到合适的图像 Xcode Swift

dyld:库未加载:@rpath/libswiftCore.dylib

dyld:库未加载:@rpath/libswiftAVFoundation.dylib