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

时间:2015-06-13 06:34:47

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

我在新的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' (意外的文件类型'文本'在框架和库构建阶段)

知道该怎么做?

8 个答案:

答案 0 :(得分:112)

我遇到了同样的问题。我找到了某种方式。

  1. 转到Build Phases> Link Binary with Librairies> +>添加其他
  2. 进入文件选择窗口后,执行" CMD" + Shift + G(转到文件夹)并键入/ usr / lib /
  3. 从/ usr / lib您可以添加:libz.dylib等等......
  4. 编译并玩得开心

答案 1 :(得分:82)

现在可以在libz.tbd下找到libz.dylib quote from the Apple developer forums

  

对于那些好奇的人来说,.tbd文件是新的"基于文本的存根   库",提供了更紧凑的存根版本   用于SDK的库,有助于显着减少它   下载大小。

希望很快会有更多文档。

<强> 修改

要澄清它,我将引用Guitz的回答更新的内容

  
      
  1. 转到Build Phases&gt; Link Binary with Librairies&gt; +&gt;添加其他
  2.   
  3. 进入文件选择窗口后,执行&#34; CMD&#34; + Shift + G(转到文件夹)并键入/ usr / lib /
  4.   
  5. 从/ user / lib您可以添加: libz.tbd 等等......
  6.   
  7. 编译并玩得开心
  8.   

答案 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 /

  1. 转到Build Phases&gt; Link Binary with Librairies&gt; +&gt;添加其他
  2. 进入文件选择窗口后,执行CMD + Shift + G(转到文件夹)并键入/ usr / lib /
  3. 从/ user / lib您可以添加:libz.1.dylib
  4. 它对我有用。

答案 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