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

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


当前回答

我在安装shareKit时遇到了这个问题。它可以在模拟器中运行,但不能在设备上运行。我从其他链接器标志中删除了-all_load,一切都在模拟器和iphone设备中正常工作。

其他回答

如果您在释放模式下构建您的Flutter项目时遇到了这个问题-这对我有帮助:

Set your build system to New Build System in File > Project Settings… delete folders ios and build_ios from your project folder. create ios module by executing flutter create . from your project folder. open Xcode and: set the IOS Deployment Target to at least 9.0 in PROJECT > Runner check your Signing & Capabilities make sure your Build Configuration is set to Release in Edit Scheme... and build for Generic iOS Device execute pod install from your project folder execute flutter pub get from your project folder

现在打开你的Xcode并构建或存档它:Product > build(或archive)

我没有在这里找到这个建议,所以它是这样的: 如果你的项目有多个目标(即一个OSX和一个iOS),那么你必须为每个目标链接相关的库。例如,在我的情况下,我需要AudioToolbox..我不得不为OSX和iOS添加一次(在框架文件夹下,你必须有每个目标的每个库的副本..如果你只看到一个..那么这就是一个危险信号)

当我试图编译一个将“c++标准库”的目标构建设置设置为“libc++”的项目时,我收到了“架构armv7的未定义符号:”错误(必要的,因为项目使用了c++ 11的一些功能),并且该项目包括一个具有相同设置设置为“libstdc++”的子项目(或编译器默认值,因为它目前)。

将子项目的“c++标准库”设置更改为libc++可以修复这个问题,但前提是首先将子项目的部署目标设置为5.0或以上(5.0对于libc++是必要的)。

如果你在你的目标>构建设置>其他链接标志下有-ObjC标志,你会遇到这个问题,考虑删除它。如果你故意添加它是因为你需要从一个静态库加载一些Obj-C代码,否则通常不会加载,IE,一个Obj-C类别,那么你应该使用-force_load <path>而不是-ObjC。

<path>应该相对于你的Xcode项目目录。IE,如果你的目录结构是这样的:

iOSProject
  + iOSAPI.framework
      + iOSAPI
  + iOSAPI.xcodeproj

然后你应该将这个标志设置为其他链接器标志:

-force_load iOSAPI.framework/iOSAPI

如果你想像这样包含多个库,那么你应该为每个库包含一个单独的-force_load行。

-force_load iOSAPI.framework/iOSAPI
-force_load another.framework/another

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