【问题标题】:Swift 2 / iOS 9 - libz.dylib not foundSwift 2 / iOS 9 - libz.dylib 未找到
【发布时间】:2015-08-29 05:10:18
【问题描述】:

我在我的新 Swift 2.0 项目中使用了一些来自谷歌的外部代码,这些代码在早期版本中需要“libz.dylib”。更新到新的 Xcode / 新的 SDK 之后。

Xcode 现在无法导入 libz.dylib 并抛出一些错误

架构 i386 的未定义符号: “_deflate”,引用自: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] 在 libGoogleAnalyticsServices.a(GAICompressionUtil.o) “_deflateEnd”,引用自: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] 在 libGoogleAnalyticsServices.a(GAICompressionUtil.o) “deflateInit2”,引用自: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] 在 libGoogleAnalyticsServices.a(GAICompressionUtil.o) “_inflate”,引用自: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] 在 libGoogleAnalyticsServices.a(GAICompressionUtil.o) “_inflateEnd”,引用自: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] 在 libGoogleAnalyticsServices.a(GAICompressionUtil.o) “inflateInit2”,引用自: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] 在 libGoogleAnalyticsServices.a(GAICompressionUtil.o) ld:未找到体系结构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

在“构建阶段”设置中查看可用包时,我可以找到“libz.tbd”,它似乎是 libz.dylib 的替代品。导入此库时,链接器错误保持不变,但我收到此附加警告:

警告:跳过文件'/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/lib/libz.tbd'(意外的文件类型' text' 在框架和库构建阶段)

怎么办?

【问题讨论】:

  • 尝试产品清除。如果它没有帮助。删除 Xcode 缓存和派生数据
  • 我同意@LeoDabus 使用“产品清除”。作为一个新项目,添加这个 tbd(它代表什么?)将编译正常。
  • 我已经清理并重建了孔项目 - 同样的问题!

标签: swift google-analytics swift2 ios9 google-analytics-sdk


【解决方案1】:

我遇到了同样的问题。我找到了一些办法。

  1. 转到构建阶段>将二进制文件与库链接 > + > 添加其他
  2. 在文件选择窗口中执行“CMD”+Shift+G(转到文件夹)并键入 /usr/lib/
  3. 您可以从 /usr/lib 添加:libz.dylib 等等...
  4. 编译并玩得开心

【讨论】:

  • 这已经过时了。现在应该是 libz.tbd。
  • @BK 也许它应该,但仍然不适用于我在带有 Xcode 7.1.1 和 .tbd 的优胜美地 - 使用上述解决方案在模拟器和设备上确实有效
  • 现在看起来你甚至不需要将它们放在你的 Link Binary with Libraries 列表中——至少在我的情况下 Xcode 会自动找到它们。就像下面 AZ0 的回答一样。
【解决方案2】:

libz.dylib 现在位于 libz.tbd 下 quote from the Apple developer forums:

对于那些好奇的人,.tbd 文件是新的“基于文本的存根” 库”,它提供了一个更紧凑的存根版本 在 SDK 中使用的库,并有助于显着减少其 下载大小。

希望很快会有更多文档。

编辑

为了澄清它,我将引用 Guitz 的答案和更新的内容

  1. 转到构建阶段>将二进制文件与库链接> + > 添加其他
  2. 在文件选择窗口中执行“CMD”+Shift+G(转到文件夹)并输入 /usr/lib/
  3. 您可以从 /user/lib 添加:libz.tbd 等等...
  4. 编译并玩得开心

【讨论】:

  • 这应该是第一个答案!
  • 这在旧 iOS 版本上使用安全吗?在您提供的链接上,他们说“删除对 .tbd 的所有引用”,那么,我们应该使用 .tbd 吗?
【解决方案3】:

从与二进制文件的链接阶段删除所有动态库 (dylib)。它会自行找到这些库。

【讨论】:

  • 谢谢!它真的像那样工作。对我来说,Xcode 7.2 的问题是模拟器使用 .tbd 而 iphone 设备/存档使用 .dylib。所以它抱怨它找不到丢失的库。
  • 在我的情况下,简单地删除库是正确的答案。似乎它们必须存在于旧版本的 Xcode 中,但在我使用的当前版本 (8.1) 中,它可以在没有它们的情况下工作。
【解决方案4】:

我在objective-c project.ios9.1,xcode7.1中有这个问题

1.Go to Target> Build Phases >Link Binary with Librairies > +

2.选择 libz.tbd 并添加它

它对我有用

【讨论】:

    【解决方案5】:

    libz.dylib 是 Zlib 的动态库,您可以从这里安装 Zlib http://zlib.net/

    【讨论】:

      【解决方案6】:

      您还可以通过添加参数-lz,在构建设置中的“Other Linker Flags”中添加lybz.dylib

      我必须这样做,因为使用从 /usr/lib 引用库的方法,当我将我的应用程序部署到我们的测试人员时,.dylib 库无法解析并导致应用程序在启动时崩溃。

      【讨论】:

        【解决方案7】:

        您可以从位置添加 libz.1.dylib:/usr/lib/

        1. 转到构建阶段>将二进制文件与库链接 > + > 添加其他
        2. 在文件选择窗口中执行 CMD+Shift+G(转到文件夹)并键入 /usr/lib/
        3. 您可以从 /user/lib 添加:libz.1.dylib

        它对我有用。

        【讨论】:

          【解决方案8】:

          同时您可以使用以前的 SDK。这是我对 libsqlite3 的回答:

          https://stackoverflow.com/a/30981161/627794

          编辑:(添加链接内容)

          打开终端,输入(更改为所需的库,例如 libz)

          locate libsqlite3.dylib
          

          你会发现几个类似这样的文件:

          /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libsqlite3.dylib
          /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libsqlite3.dylib
          

          转到您项目的设置 -> 构建阶段 -> 与二进制文件链接。通过单击+ 添加这两个文件,然后单击Add Other。点击Cmd-Shift-G,然后复制粘贴文件路径。点击Open

          如果您使用 macports 安装 sqlite3,请从 Build Settings 中的 Library Search Path 中删除 /opt/local/lib

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-12-17
            • 2016-01-05
            • 1970-01-01
            • 2018-06-23
            • 1970-01-01
            • 2016-05-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多