在iOS中导入zlib时出错:找不到符号collect2:ld

时间:2008-11-14 04:52:23

标签: ios linker zlib

我在我的iphone应用程序中包含了<zlib.h>和源代码我正在模拟Brad Larson提供的Molecules示例代码,但是,当我构建项目时,它会返回如下错误。任何人都可以向我指出这是一个链接问题的库还是我错过了其他东西?

"_deflate", referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "_inflateEnd", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "inflateInit2", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_inflate", 
referenced from: -[NSData(Gzip) initWithGzippedData:] in NSData+Gzip.o "_deflateEnd", 
referenced from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o "deflateInit2", referenced 
from: -[NSData(Gzip) gzipDeflate] in NSData+Gzip.o ld: symbol(s) not found collect2: ld 
returned 1 exit status

2 个答案:

答案 0 :(得分:82)

在目标的Build Settings标签中,向下滚动到Other Linker Flags部分,确保-lz在该字段中。这将链接内置的zlib,你的错误应该消失。

更改链接标记后,您必须先从Clean菜单中选择Product,然后再重新构建。

lz screenshot

答案 1 :(得分:47)

将libz添加到您的项目中。为此,请在Xcode中执行以下步骤:

  1. 打开项目,选择项目目标,然后单击工具栏上的蓝色项目信息图标(或按⌘I)
    Example 1
  2. 单击屏幕左下角的+按钮添加库,向下滚动到库列表的底部并选择libz.dylib;单击“添加”按钮 Example 2
  3. 点击添加后,您会看到库名称出现在链接库的oyur列表中。您现在可以在不链接错误的情况下构建项目 Example 3
  4. 您可以使用相同的方法从列表中添加任何库。如果库未出现在列表中,那么您知道它不是标准iPhone SDK的一部分,您可能需要重新考虑您的解决方案或自己静态构建库并将目标链接到该库(如果可能的话)。 / p>