iOS开发中经典错误Undefined symbols for architecture arm64: ld: symbol(s) not found for architecture arm64

出现这个问题的原因有多种,这里先记录下此次解决方案。

具体错误如图:

图中VectorShape是一个自己封装的.framework库文件;

解决方案:Build Phases下,Link Binary With Libraries中加入AppTrackingTransparency.framwork系统库文件。

 

分析(造成此问题的原因之一):

"_OBJC_CLASS_$_ATTrackingManager", referenced from:

objc-class-ref in VectorShape(ShaderExtension.o)”

从此处错误信息中可以看到是库文件的ShaderExtension文件里的错误,如果库文件可以找到源码的话,可以看下这个文件中引用的系统库文件,如果Link Binary With Libraries里没有添加这个系统库文件,就会出现这个经典错误。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个错误提示,表示在编译 Mac 应用程序时遇到了编译器找不到符号的问题,其涉及到了 ARM64 架构。这通常是由于代码使用了未定义的函数或变量,或者是链接器无法找到正确的库文件导致的。需要进一步检查代码,并确保库文件和符号都正确定义和链接。 ### 回答2: macOS是苹果公司的操作系统,不同于Windows和Linux,它专门为苹果公司的设备设计。在macOS开发人员们经常会遇到各种各样的编译错误和异常。这些错误很少是显而易见的,尤其是当你在编译器输出信息看到了 “undefined symbols for architecture arm64” 时,你可能会感到很疑惑。让我们来深入了解一下这一异常信息的原因。 首先,我们需要理解什么是符号。符号在计算机科学有着广泛的应用,它们是程序编译时被创建的一种元素,代表着函数、变量、类及其他定义,程序链接器将符号与实际的机器代码关联起来。在macOSarm64代表64位的ARM体系结构。在使用Xcode编译iOS或macOS应用程序时,错误信息的 “undefined symbols for architecture arm64” 表示编译器打开了一个与设备CPU架构不兼容的库或文件,因此编译器无法正确识别它们。 为了解决这种问题,我们可以采取以下方法: 1. 更新库和文件 首先我们需要检查本地环境使用到的库和文件是否都是与我们所使用的CPU架构兼容的版本。如果不兼容,则需要更新库和文件,确保它们能与你的CPU架构兼容。 2. 检查编译器选项 在使用编译器时,需要设置正确的选项来确保执行正确的CPU架构。我们需要检查编译器选项,确保目标CPU架构与所选选项一致。 3. 更新Xcode 如果上述两种方法都没有解决问题,那么我们可以考虑更新Xcode,确保它与我们所使用的CPU架构兼容。 总而言之,当你在编译器输出信息看到了 “undefined symbols for architecture arm64” 时,它可能是由不兼容的库或文件引起的。我们需要更新库和文件、检查编译器选项以及更新Xcode以确保它们能够与我们所使用的CPU架构兼容。 ### 回答3: "mac undefined symbols for architecture arm64"错误通常指出了arm64的框架存在未定义的符号。这通常会发生在编译或链接程序时,因为在架构无法找到符号。 这个错误的最简单的解决方案是添加缺失的库或框架,或者确保正确地加载了库或框架。使用Xcode的话,在“Build Phases”的“Link Binary with Libraries”添加必要的库或框架即可。 此外,这种错误也可能是由于优化标志设置不正确导致的。在Xcode的“Build Settings”,您可以找到“Optimization Level”并尝试将其设置为“None”。 如果以上方法都不能解决问题,那么建议您观察错误指向未定义符号的位置,并查看相应的代码(通常是代码缺少头文件或声明)。找到问题所在后,您可以将相应的库、框架或头文件添加到项目。 最后,如果您不确定该怎么解决这个错误,请搜索相关的标识符和错误信息,以获取更多可能有用的信息。还可以向开发者社区寻求帮助,以获取更专业的建议和解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值