从 Swift 类调用 Objective-C 导致链接器错误

2024-01-23

我正在尝试在 Swift 中使用 RFDuino Objective-C 库。这一切听起来很简单,我以前从 Swift 类调用过 Objective-C,没问题。然而这一次我碰壁了。

创建的头文件。向其中添加了头文件。 Swift 可以看到类没有问题。项目编译良好。

在我尝试调用任何目标类之后,构建过程中的问题就出现了

例如:

    override func viewDidLoad() {
         super.viewDidLoad()

        let rfDuinoManager: RFduinoManager = RFduinoManager.sharedRFduinoManager()

}

体系结构 x86_64 的未定义符号: “_OBJC_CLASS_$_RFduinoManager”,引用自: ViewController.o 中的 __TMaCSo14RFduinoManager ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我不确定我在这里缺少什么。 此处链接到该项目。https://www.dropbox.com/s/rza1ce01g4q5lp6/SmartHomeHub-stackoverflow.zip?dl=0 https://www.dropbox.com/s/rza1ce01g4q5lp6/SmartHomeHub-stackoverflow.zip?dl=0

预先感谢您的帮助。老实说,现在失去了希望,并考虑将整个库重写为 Swift


问题是如何将 rfduino 文件夹添加到项目中。所以

  1. Remove rfduino文件夹(在左侧的项目导航器面板中选择 rfduino 文件夹并点击删除按钮,但是当它要求将其移至垃圾桶或仅删除引用时,选择“删除引用”。

  2. 您的桥接标头有一个绝对路径引用,我建议通过在构建设置中选择它并点击删除按钮来完全删除它:

  3. 将 rfduino 文件重新添加回项目,这次,在“添加文件夹”选项下,选择“创建组”而不是“创建文件夹引用”。如果您希望它提示为您创建正确的桥接标头,请不要选择文件夹,而是选择单个文件:

    还要确保SmartHomeHub下面进行了检查。

  4. 如果你做得正确,它会要求你自动创建桥接头:

  5. 转到这个新的桥接标头并再次添加导入行:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Swift 类调用 Objective-C 导致链接器错误 的相关文章

随机推荐