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

时间:2013-12-01 23:06:00

标签: xcode dyld xctest

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

如何解决此问题?

15 个答案:

答案 0 :(得分:24)

看起来您的主要目标是链接到XCTest.framework以及您的测试目标。它应该只与主要目标相关联。

1)转到项目设置

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

3)删除' -framework XCTest'

4)确保'其他链接器标记'测试目标的字段仍包含' -framework XCTest'

答案 1 :(得分:17)

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

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

答案 2 :(得分:7)

问题在于,根据您发布的dyld错误消息,您的应用程序正在与XCTest.framework进行链接。那是不对的;只有你的测试包需要链接到XCTest.framework,因为只有你的测试包包含测试。

答案 3 :(得分:6)

我遇到类似OCMock库的问题,解决方案是:

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

答案 4 :(得分:5)

在我的情况下,这是Swift Package Manager向主要应用程序目标添加的RxTests。在Pod中,您可以决定将哪些Rx组件添加到哪个目标,但SPM会将其全部默认添加到主要目标。

答案 5 :(得分:4)

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

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

答案 6 :(得分:2)

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

答案 7 :(得分:1)

在框架搜索路径AND上输入框架的引用 在" Build Settings" ---...下运行路径搜索路径现在所有设置都使用import来调用您的项目

答案 8 :(得分:1)

我用这种方式解决了这个问题。 我编辑了计划,在" Build"标签勾选"运行"。

enter image description here

答案 9 :(得分:0)

我有同样的问题是因为我在框架中添加了一个新文件。所以,只需运行" pod install"解决了我的问题。但请确保您的广告连播也在Tests下定位。

答案 10 :(得分:0)

仅针对那些遇到相同问题的人

在右侧菜单上查看必须看起来像

Should be

并且不必看起来像这样

Shouldn't be

答案 11 :(得分: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

答案 12 :(得分:0)

一个对我有用的解决方案是将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

答案 13 :(得分:0)

我在通过Carthage使用ios-snapshot-test-case v5.0.2时遇到此错误。问题与XCode 11有关。Apple将libswiftXCTest.dylib重命名为libXCTestSwiftSupport.dylib,并添加了XCTest.swiftmodule,它具有相同的符号并且可以代替旧的符号。但是苹果忘了告诉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

答案 14 :(得分:0)

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

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

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