【问题标题】:Undefined symbols for architecture arm64: Xcode 12架构 arm64 的未定义符号:Xcode 12
【发布时间】:2021-01-21 09:31:56
【问题描述】:

我在添加 3rd 方框架后尝试构建项目,但是在添加框架后我无法编译项目,我得到 Undefined symbols for architecture arm64: error when Icompile on一个设备,但我可以在模拟器上编译。我已经尝试了在 stackoverflow 上找到的所有其他解决方案。任何帮助表示赞赏!

这是我尝试过的:

  • 在排除架构中添加了任何具有 arm64 值的 iOS 模拟器 SDK。
  • 我确实在 其他链接器标志中有 $(inherited)
  • 将启用的位码设置为否

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

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)

【问题讨论】:

  • 您可以尝试在$(inherited) 之外添加-ObjC 链接器标志吗?
  • @S1LENTWARRIOR 我已经在链接器标志中有 -ObjC
  • 我认为你应该接受一个答案:)

标签: ios swift xcode12


【解决方案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

【讨论】:

  • 感谢您的努力,这没有帮助。我已经试过了
【解决方案2】:

我发现了问题。

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

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

所以我暂时只包含了适用于 iOS 9.1 及更高版本的框架:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    我还建议比较 BUILD SETTINGS 参数(有很多但比重建项目要快......我不明白为什么 Apple 让它如此复杂)在项目之间比工作正常。

    【讨论】:

      【解决方案4】:
      1. “产品”->“方案”->“编辑方案”
      2. 选择“构建”
      3. 取消选中“并行化构建”

      【讨论】:

        【解决方案5】:

        可能的原因有很多,最后一个 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。

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

        【讨论】:

          【解决方案6】:

          我发现将有此错误的文件的目标成员资格设置为目标是有帮助的。单击产生此错误的文件,在 Xcode 的右侧有检查器。在检查器中它显示了目标成员资格。如果文件当前不属于任何目标成员,请选择您想要的。

          【讨论】:

          • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
          猜你喜欢
          • 2019-05-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多