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

Tim*_*ean 23 xcode ios swift

我已经构建了一个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
Run Code Online (Sandbox Code Playgroud)

我搜索了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)

Tim*_*ean 42

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

  1. 我已经在我的Swift框架和使用框架的Swift应用程序的构建设置选项卡中设置Always Embed Swift Standard Libraries了一个值YES.
  2. 我已经添加Foundation.framework到我的Swift框架和使用该框架的Swift应用程序的常规选项卡的Linked Frameworks and Libraries部分.
  3. 我已经添加Foundation.framework到使用框架的Swift应用程序的常规选项卡的嵌入式二进制文件部分.

有了所有这三个设置,我就可以构建并运行我的应用程序而不会遇到此错误.

  • 对我来说,完成你指导的第一点就足够了.谢谢. (5认同)
  • 第1点单独解决了它.我觉得很奇怪你必须把它放在应用程序和链接框架上.XCode的依赖关系管理是困惑的根源.还有其他方法让它自动化吗? (2认同)

S2d*_*ent 25

对于每个人来说可能并非如此,但我通过在主目标中编写一些代码来解决它.

我有一个由框架和测试目标组成的空项目,在运行测试时我遇到了这个错误.显然Swift非常聪明地检测到你实际上并不需要这个库并且没有链接到libswiftSwiftOnoneSupport.dylib.

修复只是添加一些代码,我刚刚添加:

class Test {
    func a() { print ("something") }
}
Run Code Online (Sandbox Code Playgroud)

libswiftSwiftOnoneSupport.dylib得到了联系.

  • “显然,Swift非常聪明,可以检测到您实际上不需要此库,并且没有链接到libswiftSwiftOnoneSupport.dylib。”显然,这样做太聪明了,因为您显然这样做了。 (2认同)

Lui*_*ien 14

经过几天的困扰,我终于找到了对我有用的东西。希望这对其他人也有帮助。

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

我正在使用Xcode 10.1,Swift 4.2,而给我这个问题的Pod是Nimble。

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

  • 对我有效……这是唯一起作用的方法,但是如何起作用?为什么?有人可以解释吗? (2认同)

wei*_*ool 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)哦,当然,清理我的构建文件夹.