我在新的Swift 2.0项目中使用谷歌的一些外部代码,需要" libz.dylib"在早期版本中。更新到新的XCode /新SDK之后。
XCode现在无法导入libz.dylib并抛出一些错误
架构i386的未定义符号: " _deflate",引自: + [CGICogleAnalyticsServices.a中的GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:](GAICompressionUtil.o) " _deflateEnd",引自: + [CGICogleAnalyticsServices.a中的GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:](GAICompressionUtil.o) " deflateInit2 ",引自: + [CGICogleAnalyticsServices.a中的GAICompressionUtil gai_dataByCompressingBytes:length:compressionLevel:mode:](GAICompressionUtil.o) " _inflate",引自: + [libICogleAnalyticsServices.a中的GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:](GAICompressionUtil.o) " _inflateEnd",引自: + [libICogleAnalyticsServices.a中的GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:](GAICompressionUtil.o) " inflateInit2 ",引自: + [libICogleAnalyticsServices.a中的GAICompressionUtil gai_dataByInflatingBytes:length:isRawData:](GAICompressionUtil.o) ld:找不到架构i386的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
查看"构建阶段"中的可用软件包时我能找到的设置" libz.tbd"这似乎是libz.dylib的替代品。导入此lib时,链接器错误保持不变,但我收到了另外的警告:
警告:跳过文件' /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/usr/lib/libz.tbd' (意外的文件类型'文本'在框架和库构建阶段)
知道该怎么做?
答案 0 :(得分:112)
我遇到了同样的问题。我找到了某种方式。
答案 1 :(得分:82)
对于那些好奇的人来说,.tbd文件是新的"基于文本的存根 库",提供了更紧凑的存根版本 用于SDK的库,有助于显着减少它 下载大小。
希望很快会有更多文档。
<强> 修改 强>
要澄清它,我将引用Guitz的回答更新的内容
- 转到Build Phases&gt; Link Binary with Librairies&gt; +&gt;添加其他
- 进入文件选择窗口后,执行&#34; CMD&#34; + Shift + G(转到文件夹)并键入/ usr / lib /
- 从/ user / lib您可以添加: libz.tbd 等等......
- 编译并玩得开心
醇>
答案 2 :(得分:8)
从带有二进制文件的链接中删除所有动态库(dylib)。它会自己找到这些库。
答案 3 :(得分:2)
我在objective-c project.ios9.1,xcode7.1
中遇到此问题1.转到目标&gt;构建阶段&gt;链接Binary与Librairies&gt; +
2.选择libz.tbd并添加
它对我有用
答案 4 :(得分:1)
libz.dylib是Zlib的动态库,你可以从这里安装Zlib http://zlib.net/
答案 5 :(得分:0)
您可以从位置添加libz.1.dylib:/ usr / lib /
它对我有用。
答案 6 :(得分:0)
您还可以通过添加参数lybz.dylib
,在构建设置中添加来自“其他链接器标志”的-lz
。
我必须这样做是因为,使用从/ usr / lib引用库的方法,当我将我的应用程序部署到测试人员时,.dylib库无法解析并导致应用程序在启动时崩溃。
答案 7 :(得分:-2)
同时您可以使用以前的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
转到您的项目设置 - &gt;构建阶段 - &gt;链接二进制文件。点击+
,然后点击Add Other
即可添加两个文件。点击Cmd-Shift-G
,然后复制粘贴文件路径。点击Open
。
如果使用macports安装sqlite3,请从Build Settings中的Library Search Path中删除/opt/local/lib
。