Gre*_*sek 9 macos xcode objective-c swift xcode6
我正在尝试在Swift中使用RFDuino Objective-C库.这听起来很简单,我之前从Swift类中调用过Objective-C,没问题.然而这次我撞到了砖墙.
创建的头文件.添加了头文件.Swift可以看到类没问题.项目编译好.
构建过程中的问题出现在我尝试调用任何Objective类之后
例如:
override func viewDidLoad() {
super.viewDidLoad()
let rfDuinoManager: RFduinoManager = RFduinoManager.sharedRFduinoManager()
}
Run Code Online (Sandbox Code Playgroud)
架构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
在此先感谢您的帮助.老实说现在失去了希望并考虑将整个库重写为Swift
Rob*_*Rob 16
问题是如何将rfduino文件夹添加到项目中.所以
删除rfduino文件夹(在左侧的项目导航器面板中选择rfduino文件夹并点击删除按钮,但当它要求将其移动到垃圾箱或只删除引用时,请选择"删除引用".
您的桥接头有一个绝对路径引用,我建议通过在构建设置中选择它并点击删除按钮来完全删除它:
将rfduino文件重新添加回项目,这次,在"添加文件夹"选项下,选择"创建组"而不是"创建文件夹引用".如果您希望它为您提示创建适当的桥接标题,请不要选择文件夹,而是选择单个文件:
还要确保在SmartHomeHub下面检查.
如果您正确执行此操作,它将要求您自动创建桥接标头:
转到此新的桥接标题并再次添加导入行:
这是一个链接器错误,而不是编译器错误。您确定项目中包含RFduino类(源或库)(在Xcode的右侧打开项目成员资格面板,并确保选中该框以将库包含在目标中)。
如果包含它,请确保其中已编译x86_64代码。它可能是一个iOS库,只是为ARM编译的。您可以通过lipo在命令行中找到二进制文件并在其上运行来进行检查。
lipo -info [name of RFduinolibrary.a(dylib,whatever)]
它应该显示x86_64为体系结构,ala:
Architectures in the file are: i386 x86_64
| 归档时间: |
|
| 查看次数: |
4542 次 |
| 最近记录: |