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

Invoking swift in objective-C++ (.mm file)

能否调用 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 文件中抛出许多编译错误,例如:

Cannot find protocol declaration for 'NSApplicationDelegate', did you mean 'NSConnectionDelegate'?

No type protocol named 'NSTableViewDataSource'

等...

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

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

我刚刚通过添加 -fcxx-modules 标志成功编译了调用 swift 的 .mm 文件。 Xcode 生成的 <Module>-Swift.h 文件包含 @import 并检查模块支持。从这个答案中找出标志:.