Swift 2 / iOS 9 - libz.dylib 未找到

Swift 2 / iOS 9 - libz.dylib not found

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

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

Undefined symbols for architecture i386: "_deflate", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_deflateEnd", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "deflateInit2", referenced from: +[GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_inflate", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "_inflateEnd", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) "inflateInit2", referenced from: +[GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:] in libGoogleAnalyticsServices.a(GAICompressionUtil.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)

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

warning: skipping file '/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/lib/libz.tbd' (unexpected file type 'text' in Frameworks & Libraries build phase)

怎么办?

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

  1. 转到构建阶段 >Link 带有库的二进制文件 > + > 添加其他
  2. 在文件选择中 window 执行 "CMD"+Shift+G(转到文件夹)并键入 /usr/lib/
  3. 从 /usr/lib 您可以添加:libz.dylib 以及更多...
  4. 编译并享受乐趣

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

编辑:(添加了link内容)

打开终端,输入(更改为您想要的库,例如 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

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

如果您使用 macports 安装 sqlite3,请从构建设置中的库搜索路径中删除 /opt/local/lib

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

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

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

For those who are curious, the .tbd files are new "text-based stub libraries", that provide a much more compact version of the stub libraries for use in the SDK, and help to significantly reduce its download size.

希望很快会有更多文档。

编辑

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

  1. Go to Build Phases >Link Binary with Librairies > + > Add other
  2. Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
  3. From /user/lib you can add : libz.tbd and more...
  4. Compile and have fun

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

  1. 转到构建阶段 >Link 带有库的二进制文件 > + > 添加其他
  2. 一旦进入文件选择 window 执行 CMD+Shift+G(转到文件夹)并键入 /usr/lib/
  3. 从 /user/lib 您可以添加:libz.1.dylib

对我有用。

我在 objective-c 项目中遇到了这个问题。ios9.1,xcode7.1

1.Go 到目标 > 构建阶段 >Link 带库的二进制文件 > +

2.select libz.tbd 并加上

对我有用

您还可以通过添加参数 "Other Linker Flags"Build Settings 中添加 lybz.dylib -lz.

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