2016-12-06 102 views
6

我已经构建了一个Swift框架,现在我试图开始构建一个将使用该框架的Swift iOS应用程序。我得到这个错误:dyld:Library未加载:@ rpath/libswiftSwiftOnoneSupport.dylib

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文件到本地副本我的项目中我的应用程序的构建设置,添加一个自定义构建阶段将这些文件复制到框架文件夹中。

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

  • 的Xcode 8.1版(8B62)
  • 苹果斯威夫特版本3.0.1(swiftlang-800.0.58.6铛 - 800.0.42.1)
+0

longshot建议:将'@executable_path /../ Frameworks'添加到您的框架中的运行时搜索路径。 –

+0

@JoeDaniels - 当我添加它时没有区别。感谢您的建议。 –

+0

哦,Swift语言版本呢?这是全部3.0吗? –

回答

21

我最终得到了这个工作使用补丁的混合。我不确定是否所有这些都是需要的,但我记录了这里似乎对我有用的东西,以防万一任何人都能从我所找到的东西中受益。

  1. 我已Always Embed Swift Standard Libraries在两个我的斯威夫特框架构建设置选项卡中的YES值,并在使用该框架的应用雨燕。
  2. 我已将Foundation.framework添加到我的Swift框架和使用该框架的Swift应用程序的常规选项卡的Linked Frameworks和Libraries部分。
  3. 我已将Foundation.framework添加到使用该框架的Swift应用程序的常规选项卡的嵌入式二进制文件部分。

所有这些设置都已准备就绪,我可以在不遇到此错误的情况下构建和运行我的应用程序。

+0

谢谢!我花了两个小时设置了我正在制作的一个生产应用程序的演示应用程序/框架功能。两次构建事情时,我遇到了这个确切的错误。出于某种原因,我可以循环(迭代)通过框架中的自定义UIButtons数组,但是当我尝试实际访问循环中的某些内容时,我得到了此错误。仅供参考:我测试了每件东西,而我需要添加的*只有* 1是#1。这个新功能仅在Xcode 8中开发,并且在一个分支中工作(我不知道为什么),但是没有任何其他新创建的项目 - 直到现在。 – dfd

+0

对我来说,完成第一点指令就足够了。 谢谢。 –

+0

只有1点才解决了它。我觉得很奇怪,你必须把它放在应用程序上,并放在链接的框架上。 XCode的依赖关系管理是一个困惑的根源。任何其他方式使其自动? –

4

你如何安装你的依赖关系?

我有一个类似的问题:

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

它竟然是关系到整个雨燕模块优化。

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

解决方案是明确指定我希望Carthage打造的配置。 (carthage bootstrap --configuration Debug)哦,并且清理我的build文件夹,当然。

+0

感谢您的建议,但我没有安装任何依赖项,也没有使用迦太基。我在一个Xcode项目中创建了自己创建的Swift框架。我在另一个Xcode项目中创建了自己创建的Swift应用程序。我在一个Xcode工作区中都有两个项目,并且我有该应用程序引用的框架。 –

+0

尝试检查框架和应用程序的构建设置中的优化级别。 – weissazool