28

我已经包含<zlib.h>在我的 iphone 应用程序和源代码中,我正在模拟 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
4

2 回答 2

82

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

更改链接器标志后,您必须在再次构建之前Clean从菜单中进行选择。Product

lz截图

于 2008-11-14T05:05:50.940 回答
47

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

  1. 打开您的项目,选择您的项目目标,然后单击工具栏上的蓝色项目信息图标(或按⌘I)
    示例 1
  2. 单击屏幕左下角的+按钮添加库,向下滚动到库列表底部并选择libz.dylib;单击添加按钮。
    示例 2
  3. 单击添加后,您将看到库名称出现在链接库列表中。您现在将能够构建您的项目而不会出现链接错误。
    示例 3

您可以使用相同的方法从列表中添加任何库。如果该库未出现在列表中,那么您知道它不是标准 iPhone SDK 的一部分,您可能需要重新考虑您的解决方案或自己静态构建库并将您的目标链接到该库(如果可能的话)。

于 2008-11-14T05:15:23.183 回答