在objective-C++(.mm文件)中调用swift

Wes*_*loy 3 objective-c objective-c++ swift

可以在Objective-C++(.mm)文件中调用Swift代码吗?有没有简单的解决方法,如果没有?

我有一个Xcode项目,它是Swift,Objective-C和C++的混合体.我没有问题从Objective-C到Swift用-Bridging-Header.h或从Swift到Objective-C用-Swift.h.

但我有一个.mm文件,它是Objective-C++.当我尝试#import "[ProductName]-Swift.h"它时会在-Swift.h文件中抛出许多编译错误,例如:

找不到'NSApplicationDelegate'的协议声明,你的意思是'NSConnectionDelegate'吗?

没有名为'NSTableViewDataSource'的类型协议

等等...

我已经研究了其他几个类似的问题,例如我可以将Swift与C++混合使用吗?就像Objective - C .mm文件一样,它似乎没有给我一个明确的答案或解决方案.

在我看来,我目前的解决方法是在Objective-C中创建一个使用Swift代码然后将其导入Objective-C++代码的包装器对象.

cah*_*ahn 8

我刚刚成功编译了一个.mm文件,通过添加-fcxx-modules标志来调用swift .<Module>-Swift.hXcode生成的文件包括@import并检查模块支持.从这个答案中找到了标志:https://stackoverflow.com/a/20708695/2570853.

  • 在构建阶段双击该文件并输入标志. (3认同)