Undefined symbols for architecture arm64(其cpu架构)
"_OBJC_CLASS_$_XXX",referenced from: 之类的问题,很多人看到这些很头疼,不知道从何下手去修改。以下是我总结的相关修改办法。如下图

这是一个很明显的在arm64架构下,找不到定义的错误。 这类错误我总结的就六种,.m 缺失、静态库没导入(不支持arm64 架构,现在基本都支持了,如果不支持更新相关静态库。怎么查看参考文末)、library路径问题、header 文件路径、Valid Architectures 指定错误,连接器参数问题
1.那么首先检查 Architectures 选项
通常情况下,Build Active Architectures Only 在Debug 模式为YES,Release模式为NO。
Valid Architectures 为 arm64 armv7 armv7s
需要你了解的是 只有连接了Active 的调试设备,这个选项才生效,只编译当前设备对应的指令集。如果你没有连接设备,那么这里即使是YES,也不会生效。编译器会按照你的Valid Architectures和Architectures指定的二进制包进行编译。
具体参考
armv6 设备: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
armv7 设备: iPhone3GS, iPhone4, iPhone4S
iPad, iPad2, iPad3(The New iPad), iPad mini
iPod Touch 3G, iPod Touch4
armv7s设备: iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64 设备: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display) 之后出的到X都是arm64的设备了
2. 向 Link Binary With Libraries 中 添加相应的framework ,向Compile Source 添加你缺失的.m
3.修改 Other Linker Flags 添加 -ObjC 和 $(inherited),(也可以直接添加缺失的framework 如: -framework "frameworkname" )
4. Header Search Path 和Library Search Path 先添加$(inherited),如果编译后,没有出现,就手拖缺失文件的相关路径(如果路径为多层级,选择递归搜索recursive 默认是non-recursive)
5.最后检查 framework 和.m 有没有 勾选 target membership 。
总之,如果先思考是静态库问题,还是其他文件问题,会节约很多时间。以上总结,以留档备查,也希望可以给别人一些思路。
实例 1: 错误信息中有明显的提示 does not contain bitcode。 所以 直接设置 bitcode 为NO 就可以了

附:
查看.a或.framework 的静态库文件都支持哪些架构, 终端 进入工程根目录 find . -name *.a -exec lipo -info "{}" \ 或者.framework
Undefined symbols for architecture arm64(其cpu架构)的更多相关文章
- Undefined symbols for architecture arm64解决方案
在iOS开发中经常遇到的一个错误是Undefined symbols for architecture arm64,这个错误表示工程某些地方不支持arm64指令集.那我们应该怎么解决这个问题了?我们不 ...
- Undefined symbols for architecture arm64: "_OBJC_CLASS_$_WKWebView", referenced from: objc-c
出现: Undefined symbols for architecture arm64: "_OBJC_CLASS_$_WKWebView", referenced from: ...
- ios集成极光推送:Undefined symbols for architecture arm64: "_dns_parse_resource_record", referenced from:?
添加libresolv.tbd库,即可解决问题 Undefined symbols for architecture arm64: "_dns_parse_resource_record&q ...
- Undefined symbols for architecture arm64: "_OBJC_CLASS_$XXX", referenced from: objc-class-ref in XXX
ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 ...
- iOS Undefined symbols for architecture arm64解决办法
Undefined symbols for architecture arm64: "_OBJC_CLASS_$_YYCache", referenced from: ...
- Undefined symbols for architecture arm64:问题
Undefined symbols for architecture arm64: "_sqlite3_prepare_v2", referenced from: +[HMJSch ...
- 解决xcode5升级后,Undefined symbols for architecture arm64:问题
The issue is that the cocoapods have not been built for arm64 architecture yet thus they cannot be l ...
- iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64
博客处女作,写得不好望谅解! “for architecture arm64”就是说没有支持arm64,在Build settings里architecture相关的几项需要配置正确 在最近升级coc ...
- Undefined symbols for architecture arm64:
1. 没有往项目中导入静态库(.a 文件)需要的 framework. 2.拖到项目中的静态库不支持arm64(或其他)指令集 这种情况没遇到过 一般都是第一种情况.
随机推荐
- UML总结复习指南
用例图 1. 參与者(Actor) 表示与您的应用程序或系统进行交互的用户.组织或外部系统.用一个小人表示. 2. 用例(Use Case) 用例就是外部可见的系统功能,对系统提供的服务进行描 ...
- poj:4091:The Closest M Points
poj:4091:The Closest M Points 题目 描写叙述 每到饭点,就又到了一日几度的小L纠结去哪吃饭的时候了.由于有太多太多好吃的地方能够去吃,而小L又比較懒不想走太远,所以小L会 ...
- Js动态操作表格
HTML <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co ...
- JAVA入门[8]-测试mybatis
上一节通过mybatis-generator自动生成了CategoryMapper接口,pojo等类,接下来我们写几个简单的测试来进行调用. 一.添加依赖 <dependency> < ...
- ResourceBundle读取文件学习
开发中,我们经常需要读取本地文件(properties文件),这样的好处是文件是动态的,可配置的.这时候我们就需要用到ResourceBundle这个类. 这个类属于java.util.*. 这个类的 ...
- 写给自己的web总结——关于html的知识总结
相信每个前端工程师初识前端之时,最先接触的都是html吧! html的全称是hyperText markup language, 超文本标记语言,在网页中所有的文字,图片,架构等都是由html来编写的 ...
- MVC系列——一个异常消息传递引发的思考
前言:最近在某个项目里面遇到一个有点纠结的小问题,经过半天时间的思索和尝试,问题得到解决.在此记录一下解决的过程,以及解决问题的过程中对.net里面MVC异常处理的思考.都是些老生常谈的问题,不多说, ...
- iOS SVN出现的问题,在mac使用Cornerstone中无法提交提交失败处理。。。
问题一: Description : An error occurred while contacting the repository. Suggestion : The server may be ...
- ios 中的循环引用问题及解决
循环引用,指的是多个对象相互引用时,使得引用形成一个环形,导致外部无法真正是否掉这块环形内存.其实有点类似死锁. 举个例子:A->B->C->....->X->B - ...
- MySQL数据库 Event 定时执行任务.
一.背景 由于项目的业务是不断往前跑的,所以难免数据库的表的量会越来越庞大,不断的挤占硬盘空间.即使再大的空间也支撑不起业务的增长,所以定期删除不必要的数据是很有必要的.在我们项目中由于不清理数据,一 ...