体系结构arm64的未定义符号:Xcode 12

时间:2020-10-06 13:30:59

标签: ios swift xcode12

我在添加第3方框架后尝试构建项目,但是在添加框架后我无法编译该项目,我得到体系结构arm64的未定义符号:尝试在以下位置编译时出错设备,但我可以在模拟器上进行编译。我已经尝试了在stackoverflow上发现的所有其他解决方案。任何帮助表示赞赏!

这是我尝试过的:

  • 在排除的体系结构中添加了值为 arm64 的所有iOS Simulator SDK。
  • 我确实在其他链接器标记
  • 中有$(继承)
  • 将启用的位码设置为否

我尝试过的所有解决方案都不适合我。

Undefined symbols for architecture arm64:
      "_OBJC_CLASS_$_*", referenced from:
          objc-class-ref in frameworkName.o
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

5 个答案:

答案 0 :(得分:1)

尝试将其添加到您的pod文件中

post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
          end
        end
    end

答案 1 :(得分:1)

我找到了问题。

我的项目支持的最低部署目标低于框架,这导致了问题。我必须包括从特定iOS版本开始的框架。

这里是场景和问题:我的项目支持iOS 9,框架从9.1开始支持。因此,我没有获得最新的框架,而是Cocoapods下载了不支持arm64的较旧版本的框架。

因此,目前我仅包括仅适用于iOS 9.1及更高版本的框架:

platform :ios, '9.1'
      pod 'PodName', '~> 3.2'

然后正确编译项目,感谢那些试图提供帮助的人。因为这个原因,我花了半天的时间,我把这个放在这里给任何可能遇到相同问题的人。

答案 2 :(得分:0)

忘记复杂的答案,因为您更改了XCODE内部结构,这些答案可能会影响其他已开发的应用程序。

根据我的经验,发生这种情况是因为您更新了复制项目的版本,这是最简单的方法。

当在“ BUILD SETTINGS”选项卡中将“启用模块(C和Objetive -C)”参数设置为YES时,问题就解决了。

我还建议比较项目之间的BUILD SETTINGS参数(虽然很多,但比重建项目要快。。。我不明白为什么Apple使它变得如此复杂)。

BUILD SETTINGS paramenters comparation

答案 3 :(得分:0)

  1. “产品”->“方案”->“编辑方案”
  2. 选择“构建”
  3. 取消选中“并行构建”

答案 4 :(得分:0)

可能的原因有很多,最后一个 armv7 版本停留在 iOS 10。 所以对我来说:

我尝试使用没有“armv7”的“有效架构”,它在 Xcode 12 中不再存在。

接下来我尝试了 ONLY_ACTIVE_ARCH,我知道这会导致我最终无法存档我的应​​用

最后,我搜索了我本地的 podspec,找到了

    s.ios.deployment_target = "10.0"

由于我的主应用程序的最小部署目标设置为 iOS 11。所以我设置了

    s.ios.deployment_target = "11.0"

Xcode 不再抱怨这个 armv7。

希望这对某人有所帮助,检查您的框架或任何依赖项,确保它们设置正确。