【问题标题】:Xcode 9 undefined symbols for architecture x86_64Xcode 9 用于架构 x86_64 的未定义符号
【发布时间】:2018-03-07 05:37:18
【问题描述】:

切换到 Xcode 9 后出现错误,如下所示。

我删除了项目和类名称,但有一个以 .o 后缀结尾的类列表。在 Xcode 8.3.2 中一切正常。我有 2 个项目,一个是正在建设中没有问题的图书馆。另一个项目是测试应用程序,它通过 Podfile 中的 :path 指令指向库。在这两个项目中,构建设置 -> 架构设置为标准架构,仅构建活动架构设置为调试:是,发布:否。您遇到过这个问题吗?预先感谢您的帮助。

【问题讨论】:

  • 您的 pod 是否更新
  • 我刚刚更新了它们,但同样的错误
  • 你是在设备还是模拟器上试过,你的文件不支持模拟器
  • 它确实支持模拟器,在 Xcode 8.3.2 中我在模拟器和设备上都进行了测试,在 Xcode 9 中,模拟器和设备都没有工作
  • 你能给我们看看 pod 文件吗

标签: ios iphone xcode llvm xcode9


【解决方案1】:

由于您使用的是 Cocoapods,因此您很可能需要更新它们。

这意味着您需要在项目目录中的命令行上执行pod update,然后在 Xcode 中重建您的项目。

一般来说,当使用 Xcode 的新主要版本时,需要重新构建所有组件。您的错误消息告诉您您已经拥有的目标文件(*.o 文件基本上是编译器从您的源文件中生成的)与新编译的目标文件不兼容(在您的情况下抱怨的链接器具有目的是将所有目标文件组合或“链接”在一起)。

有时可能需要清理您的派生数据(Xcode 缓存的东西)。您可以通过转到 Xcode 的 Product 菜单并在按住 Option/Alt 键的同时选择菜单项“清理构建文件夹”来执行此操作。

【讨论】:

  • 我在两个项目中都进行了 pod 更新,按照您建议的方式清理了构建文件夹,但仍然弹出这些错误。
  • 你在两个项目中都设置了什么 Swift 版本?您确定您的测试应用程序中引用的框架不是某个旧框架,而是您新构建的框架吗?
  • 您可以从链接的框架中删除应用程序的依赖关系,然后再次将其拖入
  • 这些都是 Objective-C 项目。我确信我引用了正确的项目。
  • 那么如果您能提供构建日志可能会有所帮助。在左侧检查器窗格中,转到最后一个选项卡,您将看到所有最近的构建。选择最后一个构建,您将在主编辑器中看到日志。你能以某种方式发布吗? (如果您愿意,可以在文本编辑器中查找/替换内容以隐藏内容)
【解决方案2】:

当我为分析运行 build 时,它可以正常工作,但在经典 build 中出现了提到的错误。在搜索日志后,似乎有一些奇怪的标志行为,特别是 -fprofile-instr-generate。解决方案是在库项目的构建设置中将标志 Enable Code Coverage 设置为 No。这是在黑暗中拍摄,但不知何故让它发挥了作用。

【讨论】:

    【解决方案3】:

    这里的简单技巧:Go -> Go To Folder "/Library/Developer/Xcode" delete Derived data next clean your project then Run .

    【讨论】:

      【解决方案4】:

      遇到了类似的问题。把它贴在这里,以防它可以帮助任何人。

      在我们应用的 Objective-c 类 B 中使用框架(用 Swift 3 和我们自己编写)中的类 AbcService。从 Xcode8/Swift3 升级到 Xcode9/Swift4 后,它无法构建release 配置的存档,由于链接期间此类的Undefined symbols 错误:

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

      奇怪的是,它可以很好地存档 debug 配置,并在模拟器中运行。

      花了将近 1 天的时间找出根本原因:框架中的 Swift 类 AbcService 缺少 public 修饰符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-12
        • 2016-11-07
        • 2015-11-24
        • 2013-03-09
        • 2013-02-07
        • 2016-11-05
        相关资源
        最近更新 更多