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

    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并没有帮助,有人有什么想法吗?


当前回答

我只添加了libz.1.2.5。Dylib到我的项目,它的工作就像一个魅力。

步骤,

进入构建阶段。 Link Binary With library -使用“+”按钮选择要添加的框架和库。 选择libz.1.2.5。列表中的Dylib。 构建并运行。

其他回答

我在.h文件中有多个@接口,还没有包括所有相应的@实现指令。确保它们都平衡了。

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

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

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

我曾经遇到过这个问题。我意识到在移动一个类时,我已经在目标文件夹上用.h文件覆盖了.mm文件。

修复这个问题就修复了错误。

我也有同样的问题。我尝试了答案列表中的每一种方法,但最终我的问题是: 我正在使用openCV,所以我需要在我的代码中结合c++代码。要做到这一点,你应该将使用objective-c和c++的文件更改为.mm 我没有改变一个文件,这个文件没有连接到c++代码,但我必须改变它。

我有这个警告,当在另一个类的.h文件中写两个类时,但忘记在.m文件中写这个类的实现。