【问题标题】:dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib Reason: image not founddyld:库未加载:@rpath/libswiftAVFoundation.dylib 原因:找不到图像
【发布时间】:2018-03-26 15:29:53
【问题描述】:

我在启动我的应用程序时收到此错误。我正在 MacOS High Sierra 10.13 上的 Xcode 9.0 (9A235) 下构建。我还尝试在 Xcode 8.3.3 下构建,结果相同。项目一般是Objective C,但是框架YouAppi.framework是Swift:

dyld: Library not loaded: @rpath/libswiftAVFoundation.dylib
  Referenced from: /private/var/containers/Bundle/Application/7D3E2815-4CA3-4258-AEF6-C0626055A8F2/dingbats.app/Frameworks/YouAppi.framework/YouAppi
  Reason: image not found

乍一看,这似乎与this question 重复,但错误在那个不同。在另一个问题中,原因是找不到合适的图片,而我的原因是找不到图片

我尝试了以下解决方法:

  1. 删除并重新添加框架
  2. 清理和选项+清理项目
  3. 删除 ~/Library/Developer/Xcode/DerivedData 文件夹
  4. 构建设置 -> 始终嵌入 Swift 标准库 = 是
  5. 构建设置 -> 去除 Swift 符号 = 否
  6. 构建设置 -> 链接 -> 运行路径搜索路径 --
    • 添加了@loader_path
    • 添加了@rpath
    • 添加了@executable_path/Frameworks
  7. 检查了信任设置为使用系统默认值的开发人员和分发证书
  8. 检查我是否安装了最新的 WWDR 和 G2 证书
  9. 已检查上述证书的有效性
  10. 将 YouAppi.framework 移至 Frameworks/ 文件夹。 (它最初位于“第三方框架”文件夹中。)
  11. 尝试将 libswiftAVFoundation.dylib 复制到我项目的 Frameworks 文件夹中

我最近没有换过新电脑。

我在运行 iOS 11.0.23 (15A432) 的 iPhone 7+ 以及运行 iOS 9.3.5 (13G36) 的 iPad Mini 1 上得到了相同的结果。

也试过这个:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Caches/com.apple.dt.Xcode

想法?

【问题讨论】:

  • 它是否在另一台计算机上运行?
  • @Linus,我没有另一台计算机来构建它,但为了运行,我尝试了提到的两种设备(iPhone 7+ 和 iPad Mini),结果相同。
  • 想分享项目?我可以用我的机器为你测试一下。
  • 如果可以的话会
  • 这为我解决了 - 非常感谢! “构建设置 -> 始终嵌入 Swift 标准库 = 是”

标签: ios swift xcode9 dyld


【解决方案1】:

简单的步骤

项目 -> 构建阶段 -> 嵌入框架 -> +.

它适用于所有人.. 适合所有人的完美解决方案。

  • 在 Link Binary 中添加库与库 &
  • 添加新的复制文件短语,在目标部分选择框架并在那里导入库。
  • 然后运行您的代码.. 神奇.. 享受

注意:-请确保复制文件中的“仅在安装时复制”未选中

【讨论】:

    【解决方案2】:

    在非 Swift 项目中包含使用 Swift 构建的框架时,需要将 Swift 标准库复制到最终输出中。 Xcode 对此有一个复选框(原始问题中的#4),但显然存在一个错误,在某些情况下,它并没有实际发生。

    我在某处看到另一个线程说当你有一个使用 Swift 构建的框架时会发生这种情况,该框架是为多种架构构建的,例如 armv7 和 arm64。 (见线程here。)

    无论如何,解决方案是手动添加它们。您要查找的文件位于 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos

    我做的是这样的:

    第 1 步。打开 Terminal 并键入此内容,将库复制到您主目录中的新文件夹 swiftStdLib

    cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
    mkdir ~/swiftStdLib
    cp libswift*.dylib ~/swiftStdLib
    

    第 2 步。在 Xcode 中,转到 General -> Embedded Binaries,然后点击 + 进行添加。单击添加其他,然后导航到您的主文件夹/swiftStdLib。全选并回车。

    第 3 步。清理并构建项目。

    希望这对某人有所帮助。

    XCODE 11 更新:

    在 Xcode 11.3 中,Swift 库文件夹已更改为包含主要的 Swift 版本号。最初的问题是基于 Xcode 9 的,所以这可能比 Xcode 11.3 更早发生了变化,但我没有检查过。

    新文件夹是/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos

    因此,上面的步骤 1 改为:

    cd /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-5.0/iphoneos
    mkdir ~/swiftStdLib
    cp libswift*.dylib ~/swiftStdLib
    

    【讨论】:

    • 这有帮助..在这里删除的所有废话都没有解决方案!
    • 顺便说一句,我收到符号未找到的错误:.. 怎么办.. 你知道吗?
    • 符号未找到? - 可能是一个不同的问题。也许开始一个新问题。
    • 感谢@drewster 的回复,我发现了问题所在。这实际上是与此无关的 Swift 编译器问题。所以解决了..
    • 太棒了,拯救了我的一天!谢谢:)
    【解决方案3】:

    有时只是清理项目似乎对我有用。当我有一个 swfit/objc/c++ 项目组合时,我注意到这种情况更频繁地发生。

    【讨论】:

      【解决方案4】:

      在添加框架之前试试这个:

      我删除了 xcode9 中的派生数据 - 它对我有用

      参考以下链接:如何从派生数据中删除内容

      How can I delete derived data in Xcode 9?

      【讨论】:

      • 从手机中删除应用程序,然后删除派生数据并尝试再次构建到设备为我解决了这个问题。
      【解决方案5】:

      从 Keychain Access 中删除旧的开发人员证书对我有帮助。

      【讨论】:

        猜你喜欢
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-16
        • 2013-12-25
        • 2012-03-20
        • 2013-07-16
        • 1970-01-01
        相关资源
        最近更新 更多