2015-10-14 109 views
1

能够调用Objective-C++(.mm)文件中的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”

等等

我已经看着如Can I mix Swift with C++? Like the Objective - C .mm files其他几个类似的问题,但似乎它并没有给我一个明确的答复或解决方案。

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

+2

也许这个问题与'@ import'语句不能用于Objective-C++的事实有关? – user102008

回答

5

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

+0

你在哪里设置标志? –

+1

双击构建阶段中的文件并输入标志。 – cahn