我正在尝试在 Swift 中使用 RFDuino Objective-C 库。听起来很简单,我以前从 Swift 类中调用过 Objective-C,没问题。然而这一次我碰壁了。
创建的头文件。向其添加了头文件。 Swift 可以毫无问题地查看这些类。项目编译正常。
构建过程中的问题出现在我尝试调用任何 Objective 类之后
例如:
override func viewDidLoad() {
super.viewDidLoad()
let rfDuinoManager: RFduinoManager = RFduinoManager.sharedRFduinoManager()
}
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_RFduinoManager", referenced from: __TMaCSo14RFduinoManager in ViewController.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
我不确定我在这里遗漏了什么。 链接到这里的项目。 https://www.dropbox.com/s/rza1ce01g4q5lp6/SmartHomeHub-stackoverflow.zip?dl=0
在此先感谢您的帮助。老实说现在失去希望并考虑将整个库重写为 Swift
最佳答案
问题是rfduino文件夹是如何添加到项目中的。所以
删除
rfduino
文件夹(在左侧的项目导航器面板中选择 rfduino 文件夹并点击删除按钮,但当它要求将其移至垃圾桶或仅删除引用时,选择“删除引用”。你的桥接 header 有一个绝对路径引用,我建议通过在build设置中选择它并点击删除按钮来完全删除它:
重新将 rfduino 文件添加回项目,这一次,在“添加的文件夹”选项下,选择“创建组”而不是“创建文件夹引用”。如果您希望它提示为您创建适当的桥接 header ,请不要选择文件夹,而是选择单个文件:
同时确保选中下面的
SmartHomeHub
。如果你这样做正确,它会要求你自动创建桥接头:
转到这个新的桥接头并再次添加您的导入行:
关于objective-c - 从 Swift 类调用 Objective-C 导致链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31628890/