这个问题一直让我发疯,我无法解决如何修复它...
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
Run Code Online (Sandbox Code Playgroud)
我认为这与:
ld: symbol(s) not found for architecture armv7
Run Code Online (Sandbox Code Playgroud)
但我补充道:libz.1.2.3.dylib它没有帮助,任何人都有任何想法?
Joe*_*Joe 502
"架构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.
您将文件复制到项目中但忘记检查要添加文件的目标.解决:
您包含一个静态库,它是为另一个体系结构构建的,例如主机上的模拟器i386.解决:
如果您的库供应商有多个库文件要包含在项目中,则需要包含一个用于模拟器(i386)和一个用于设备(例如armv7).
或者,您可以创建包含两种体系结构的胖静态库.
您尚未链接到正确的libz文件.如果右键单击该文件并在finder中显示其路径应位于iOS sdk文件夹中的某个位置.这是我的例子
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib
我建议删除引用,然后将其重新添加回"目标链接二进制文件"部分"构建阶段".
Cor*_*tex 197
昨晚我遇到了类似的问题和问题,这与我在Xcode中将一个类从Finder拖到我的项目有关.
解决方案是进入Build Phases选项卡,然后编译Compile Sources并确保将类拖到列表中.
Ale*_*one 37
我遇到了类似的问题,我必须在每个项目配置(调试,发布和部署)以及目标的构建设置中检查"仅构建活动体系结构".
小智 14
我有类似的问题._OBJC_CLASS _ $ _之后的类名实际上是我的类.原因是当我将源代码文件拖到导航列表中时,我没有勾选"添加到目标".
我的解决方案是:
从导航列表中删除该类,然后选择"仅删除引用"
再次拖动源代码文件,并确保勾选"添加到目标"的复选框.勾选框位于"如果需要复制"和"创建组"下.
我只将libz.1.2.5.dylib添加到我的项目中,它的工作就像一个魅力。
步骤 -
小智 5
我有一个类似的问题,看到与"std ::"相关的错误
我更改了Build Settings - > Apple LVM 5.0 - Language C++ - > C++ Standard Library
从libc ++(支持C++ 11的LLVM C++标准库)到libstdc ++(GNU C++标准库)
如果您-ObjC的“目标”>“构建设置”>“其他链接器标志”下有该标志并且遇到此问题,请考虑将其删除。如果您故意添加它是因为您需要从静态库加载一些通常不会加载的 Obj-C 代码,否则 IE(一个 Obj-C 类别),那么您应该-force_load <path>使用-ObjC.
<path>应该相对于你的 Xcode 项目目录。IE,如果你的目录结构如下所示:
iOSProject
+ iOSAPI.framework
+ iOSAPI
+ iOSAPI.xcodeproj
Run Code Online (Sandbox Code Playgroud)
那么你应该设置这个标志Other Linker Flags:
-force_load iOSAPI.framework/iOSAPI
Run Code Online (Sandbox Code Playgroud)
如果您想包含多个这样的库,那么您应该-force_load为每个库包含一个单独的行。
-force_load iOSAPI.framework/iOSAPI
-force_load another.framework/another
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
350233 次 |
| 最近记录: |