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)
怎么办?
我遇到了同样的问题。我找到了一些方法。
- 转到构建阶段 >Link 带有库的二进制文件 > + > 添加其他
- 在文件选择中 window 执行 "CMD"+Shift+G(转到文件夹)并键入 /usr/lib/
- 从 /usr/lib 您可以添加:libz.dylib 以及更多...
- 编译并享受乐趣
同时您可以使用以前的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 的回答和更新后的内容
- Go to Build Phases >Link Binary with Librairies > + > Add other
- Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
- From /user/lib you can add : libz.tbd and more...
- Compile and have fun
您可以从以下位置添加 libz.1.dylib:/usr/lib/
- 转到构建阶段 >Link 带有库的二进制文件 > + > 添加其他
- 一旦进入文件选择 window 执行 CMD+Shift+G(转到文件夹)并键入 /usr/lib/
- 从 /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 库无法解析并导致应用程序在启动时崩溃.
我在我的新 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)
怎么办?
我遇到了同样的问题。我找到了一些方法。
- 转到构建阶段 >Link 带有库的二进制文件 > + > 添加其他
- 在文件选择中 window 执行 "CMD"+Shift+G(转到文件夹)并键入 /usr/lib/
- 从 /usr/lib 您可以添加:libz.dylib 以及更多...
- 编译并享受乐趣
同时您可以使用以前的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 的回答和更新后的内容
- Go to Build Phases >Link Binary with Librairies > + > Add other
- Once in the file selection window do "CMD"+Shift+G (Go to folder) and type /usr/lib/
- From /user/lib you can add : libz.tbd and more...
- Compile and have fun
您可以从以下位置添加 libz.1.dylib:/usr/lib/
- 转到构建阶段 >Link 带有库的二进制文件 > + > 添加其他
- 一旦进入文件选择 window 执行 CMD+Shift+G(转到文件夹)并键入 /usr/lib/
- 从 /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 库无法解析并导致应用程序在启动时崩溃.