可以在Objective-C ++(。mm)文件中调用Swift代码吗?是否有任何简单的解决方法?
我有一个Xcode项目,它是Swift,Objective-C和C ++的混合体。我没有问题从使用-Bridging-Header.h
从Objective-C到Swift,从使用-Swift.h
从Swift到Objective-C。
但我有一个.mm文件,它是Objective-C ++。当我尝试#import "[ProductName]-Swift.h"
时,它会在-Swift.h
文件中抛出许多编译错误,例如:
无法找到NSApplicationDelegate'的协议声明,是吗? 意味着NSConnectionDelegate'?
没有名为' NSTableViewDataSource'
的类型协议
等...
我已经研究了其他几个类似问题,例如Can I mix Swift with C++? Like the Objective - C .mm files,但它似乎没有给我一个明确的答案或解决方案。
正如我所看到的,我目前的解决方法是在Objective-C中创建一个使用Swift代码然后将其导入Objective-C ++代码的包装器对象。
答案 0 :(得分:7)
我刚刚成功编译了一个.mm文件,通过添加-fcxx-modules
标志来调用swift。 Xcode生成的<Module>-Swift.h
文件包含@import
并检查模块支持。从这个答案中找到了标志:https://stackoverflow.com/a/20708695/2570853。