这个问题快把我逼疯了,我不知道怎么解决它。

    Undefined symbols for architecture armv7:
  "_deflateEnd", referenced from:
      -[ASIDataCompressor closeStream] in ASIDataCompressor.o
  "_OBJC_CLASS_$_ASIDataDecompressor", referenced from:
      objc-class-ref in ASIHTTPRequest.o
  "_deflate", referenced from:
      -[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
  "_deflateInit2_", referenced from:
      -[ASIDataCompressor setupStream] in ASIDataCompressor.o
ld: symbol(s) not found for architecture armv7
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

我认为这与:

ld: symbol(s) not found for architecture armv7

但是我添加了:libz.1.2.3。Dylib并没有帮助,有人有什么想法吗?


当前回答

在Xcode版本6.3.2中,我通过添加Library解决了完全相同的问题 libxml2。Dylib和libz。在链接二进制与库!

其他回答

目标->构建设置-> Apple LLVM编译语言: 将“c++语言方言”和“c++标准库”设置为编译器默认值有助于解决这个问题。

另一个可能导致“未定义符号”链接错误的原因是试图从.mm文件调用C函数。在这种情况下,您需要使用extern“C”{…}当您导入头文件时。

从objective - c++调用C-Function链接器错误

下面是我是如何得到这个问题的:

我从另一个项目中添加了.h, .m和NIB,把它们拖到我的项目导航器上。Xcode没有正确地将它们添加到构建阶段。

检查我的答案,因为我有一个类似的问题,我可以通过做一些步骤来解决。

尝试实现派生类的至少一个非内联函数。如果不这样做,链接器可能会避免为该类创建类型信息。

别名通常不包含链接到当前版本的版本标识符,在本例中为libz。Dylib链接到libz.1.2.5.dylib。使用基本别名,而不是版本化的别名。