这个问题一直让我发疯,我无法解决该问题。
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
这没有帮助,任何人有任何想法吗?
“体系结构armv7的未定义符号”的常见原因是:
您导入标头,而不链接到正确的库。这很常见,尤其是对于像QuartzCore这样的库的头文件,因为默认情况下它不包含在项目中。解决:
在的Link Binary With Libraries
部分添加正确的库Build Phases
。
如果要添加默认的搜索路径的图书馆外,你可以包括在路径Library Search Paths
中生成设置值,并添加-l{library_name_without_lib_and_suffix}
(如,对于libz.a使用-lz
)的Other Linker Flags
部分Build Settings
。
您将文件复制到项目中,但忘记了检查目标以将文件添加到中。解决:
Build Phases
为正确的目标打开,展开Compile Sources
并添加丢失的.m
文件。如果这是您的问题,请也支持下面的Cortex答案。您包括一个静态库,该库是为其他体系结构(如i386)(主机上的模拟器)构建的。解决:
如果您有多个库供应商的库文件要包含在项目中,则需要包括一个用于模拟器(i386)和一个用于设备的库文件(例如armv7)。
(可选)您可以创建包含两个体系结构的胖静态库。
您尚未链接到正确的libz文件。如果右键单击该文件并在finder中显示,则其路径应位于iOS sdk文件夹中。例如这是我的
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib
我建议删除引用,然后在目标的“链接库的二进制文件”部分的“构建阶段”中将其重新添加回去。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句