"_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架构)的更多相关文章

  1. Undefined symbols for architecture arm64解决方案

    在iOS开发中经常遇到的一个错误是Undefined symbols for architecture arm64,这个错误表示工程某些地方不支持arm64指令集.那我们应该怎么解决这个问题了?我们不 ...

  2. Undefined symbols for architecture arm64: "_OBJC_CLASS_$_WKWebView", referenced from: objc-c

    出现: Undefined symbols for architecture arm64: "_OBJC_CLASS_$_WKWebView", referenced from: ...

  3. ios集成极光推送:Undefined symbols for architecture arm64: "_dns_parse_resource_record", referenced from:?

    添加libresolv.tbd库,即可解决问题 Undefined symbols for architecture arm64: "_dns_parse_resource_record&q ...

  4. 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 ...

  5. iOS Undefined symbols for architecture arm64解决办法

    Undefined symbols for architecture arm64:  "_OBJC_CLASS_$_YYCache", referenced from:      ...

  6. Undefined symbols for architecture arm64:问题

    Undefined symbols for architecture arm64: "_sqlite3_prepare_v2", referenced from: +[HMJSch ...

  7. 解决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 ...

  8. iOS开发遇到的坑之一: 开发遇见如下错误:Undefined symbols for architecture arm64

    博客处女作,写得不好望谅解! “for architecture arm64”就是说没有支持arm64,在Build settings里architecture相关的几项需要配置正确 在最近升级coc ...

  9. Undefined symbols for architecture arm64:

    1. 没有往项目中导入静态库(.a 文件)需要的 framework. 2.拖到项目中的静态库不支持arm64(或其他)指令集  这种情况没遇到过 一般都是第一种情况.

随机推荐

  1. php&&页面静态化

    页面静态化.主要是出于两个方面的考虑.     第一:訪问html页面的速度比訪问php页面的速度快.在訪问php页面时候.须要对php进行解析.訪问html时候,直接浏览器能够解析出来.特别是PV量 ...

  2. Hibernate的load()和get()区别

    最近在用Hibernate的时候发现一个问题:比如我们从数据库获得一个对象时,使用session.get()方法还是session.load()?  两种方法在获得一个实体对象时是有区别的,在查询性能 ...

  3. 不可思议的混合模式 background-blend-mode

    本文接前文:不可思议的混合模式 mix-blend-mode .由于 mix-blend-mode 这个属性的强大,很多应用场景和动效的制作不断完善和被发掘出来,遂另起一文继续介绍一些使用 mix-b ...

  4. java爬虫简单实现

    package WebSpider; import java.io.BufferedReader; import java.io.IOException; import java.io.InputSt ...

  5. rwx读写执行对文件和目录的意义

    文件 目录 r 查看 列出目录内容 w 修改 在目录内新建删除文件 x 执行 可以进入目录 对文件的删除权限是对文件所有目录的写权限 对目录-wx的权限,有写和执行权限,既可以在目录内创建删除文件,可 ...

  6. sqlserver 存储过程 分页搜索查询

    具体调用实例见代码最后一行注释区域 --if exists(select * from sysobjects where id = object_id(N'page_search') and type ...

  7. boost::format(字符串格式化库)

    这段时间学习boost库的使用,撰文一方面留以备用,另一方面就是shared精神. format主要是用来格式化std::string字符串以及配合std::cout代替C语言printf() 使用f ...

  8. 通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽

    前言 关于讲解 JS 的拖拽功能的文章数不胜数,我确实没有必要大费周章再写一篇重复的文章来吸引眼球.本文的重点是讲解如何在某些特定的元素上禁止拖拽.这是我在编写插件时遇到的问题,其实很多插件的拖拽功能 ...

  9. nova创建虚拟机源码分析系列之五 nova源码分发实现

    前面讲了很多nova restful的功能,无非是为本篇博文分析做铺垫.本节说明nova创建虚拟机的请求发送到openstack之后,nova是如何处理该条URL的请求,分析到处理的类. nova对于 ...

  10. 闲来无事做了一个批处理的win10账号管理

    @echo off %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe&q ...