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的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 13 dyld:库未加载:/System/Library/Frameworks/LinkPresentation.framework/LinkPresentation
dyld:库未加载...原因:找不到合适的图像 Xcode Swift