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

时间:2016-12-06 00:59:15

标签: ios swift xcode

我已经构建了一个Swift框架,现在我正在尝试开始构建一个将使用该框架的Swift iOS应用程序。我收到此错误:

dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib
  Referenced from: /Users/tdean/Library/Developer/Xcode/DerivedData/NFLApplication-ejmafvjrlqgjaabggwvadjarjjlg/Build/Products/Debug-iphonesimulator/NFLStatsModel.framework/NFLStatsModel
  Reason: image not found

我已经搜索了SO并找到了类似的报告并尝试了其中列出的修复程序,包括:

  • 清除我的DerivedData文件夹
  • 重新启动Xcode和iPhone模拟器
  • 确保在我的框架和我的应用程序的构建设置中设置了Always Embed Swift Standard Libraries = YES
  • 确保在我的框架和我的应用程序的构建设置中设置了Enable Bitcode=NO
  • 在我的框架和我的应用程序的构建设置中确保Runpath Search Paths设置为@executable_path/Frameworks
  • 将我的Xcode安装中的所有libswift文件复制到项目中的本地副本中,并添加了一个自定义构建阶段,将这些文件复制到frameworks文件夹中。

在每种情况下,当我尝试运行我的应用程序时都会遇到相同的错误。

  • Xcode版本8.1(8B62)
  • Apple Swift 3.0.1版(swiftlang-800.0.58.6 clang-800.0.42.1)

8 个答案:

答案 0 :(得分:42)

我最终使用各种修复工具。我不确定是否所有这些都是必需的,但我在这里记录似乎对我有用的东西,以防万一其他人可以从我发现的东西中受益。

  1. 我已在我的Swift框架和使用该框架的Swift应用程序的构建设置选项卡中将Always Embed Swift Standard Libraries设置为值YES
  2. 我已将Foundation.framework添加到我的Swift框架和使用该框架的Swift应用程序的常规选项卡的Linked Frameworks and Libraries部分。
  3. 我已将Foundation.framework添加到使用该框架的Swift应用程序的常规选项卡的“嵌入式二进制文件”部分。
  4. 有了所有这三个设置,我就可以构建并运行我的应用程序而不会遇到此错误。

答案 1 :(得分:23)

可能并非每个人都这样,但是我通过在主要目标中实际编写一些代码来解决了这个问题。

我有一个由框架和测试目标组成的空项目,并且在运行测试时遇到此错误。显然,Swift非常聪明,可以检测到您实际上不需要此库,并且不会链接到AnniversaryBusinessLogic

解决方法是添加一些代码,我刚刚添加了

context-div

* { box-sizing:border-box; } #main-container { width: 800px; padding: 20px; margin: 20px; border: 2px solid green; } #contexts-container { padding: 20px; margin: 20px; border: 2px solid red; overflow: auto; display: flex; } #contexts-container>div { padding: 20px; min-width: 500px; /* can be what you want */ height: 400px; /* can be what you want */ overflow: auto; }已链接。

答案 2 :(得分:11)

在坚持了几天之后,我终于找到了对我有用的东西。希望这也会对其他人有所帮助。

结果证明,专门在代码中的任何地方使用print()将以某种方式强制libswiftSwiftOnoneSupport.dylib加载,问题将消失。

我正在使用Xcode 10.1,Swift 4.2,而给我带来此问题的pod是Nimble。

顺便说一句,我知道@S2dent的建议“只是添加一些代码”,但就我而言,我的框架已经有几个不同的类,因此它没有帮助我。

答案 3 :(得分:9)

您是如何安装依赖项的?

我遇到了类似的问题:

dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib Referenced from: <internal framework> Reason: image not found

事实证明这与Swift整体模块优化有关。

使用Carthage作为依赖管理器,它们被编译为Release,因此使用整个模块优化进行编译,Xcode建议我打开它。在模拟器上运行应用程序将其编译为Debug。我猜测动态框架不能与运行它的应用程序处于不同的优化级别。

解决方案是明确指定我希望Carthage构建的配置。 (carthage bootstrap --configuration Debug)哦,然后清理我的构建文件夹。

答案 4 :(得分:2)

我遇到了同样的问题,将库(我自己的一个构建库)添加到应用程序的Linked Frameworks and Libraries标签中的General中。

答案 5 :(得分:0)

如果您不想将Foundation.framework添加到链接框架或嵌入式二进制文件中,也可以向测试目标提供主机应用程序

答案 6 :(得分:0)

您可以通过在目标的“构建设置”中将“始终嵌入Swift标准库”设置为“是”来解决此问题。

答案 7 :(得分:0)

$ py test_outlook.py 2019-12-06 10:00:00+00:00 test apointment 代表@rpath-Runpath Search Path

这是一个动态链接器错误,它在负载或运行时dyld: Library not loaded: @rpath Reason: image not found

中链接二进制文件

默认情况下,LD_RUNPATH_SEARCH_PATH指向@rpath

@executable_path/Frameworks-允许您为应用程序相对指定框架位置。