在混合 Swift Obective-C for iOS 中链接存档 Xcode 15 时出现未定义符号

问题描述 投票:0回答:1

向 Objective-C 项目添加了 Swift 代码。 为模拟器构建并运行。因存档未定义符号错误而失败。

深入调查编译文件

Objective-C“*.o”文件需要符号:

_OBJC_CLASS_$_AClass

但是 AClass.swift "AClass.o" 文件只有(每 nm 输出):

0000000000002318 D _OBJC_METACLASS_$_AClass

与模拟器编译相比,我看到 AClass.swift 编译为 AClass.o:

0000000000002890 S _OBJC_CLASS_$_AClass
0000000000002398 D _OBJC_METACLASS_$_AClass

我不明白为什么 Archive 不添加“S OBJC_CLASS$_AClass”。

我已经做了什么:

  • 清除/删除并重新启动所有可能的内容;
  • 具有@objc 原因和属性
  • 将 swift 文件重新添加到 Xcode(首先,这些文件放置在那里很奇怪 - 不是在组中,并且一个文件显示在多个位置。但完全删除并重新添加,以便编译到模拟器);
  • 在构建配置中尝试了所有可能的拱门设置;
  • 比较构建日志,试图找到一些特殊的标志来阻止这种情况(没有特殊的,只是 -DDEBUG=1 之类的)。当然,编译和链接使用了不同的“sdk”文件夹。一款用于模拟器,一款用于 iPhone 设备;
  • 为存档设置调试,并且不删除调试符号。将所有ONLY_ACTIVE_ARCH设置为No。没有效果;
  • 默认隐藏的符号设置为否。

最终如何建立档案?..

swift objective-c xcode iso
1个回答
0
投票

Stack Overflow 类似的问题提示给了我更多的想法,其中之一有效).. 所需要的只是增加 iOS 部署目标。从 12.0 到 12.4 对我来说有效。

Flutter Xcode 12 存档构建失败并出现未定义符号:_OBJC_CLASS_$_STPAPIClient

© www.soinside.com 2019 - 2024. All rights reserved.