能否在 Objective-C++ (.mm) 文件中调用 Swift 代码?如果没有,是否有任何简单的解决方法?
我有一个混合了 Swift、Objective-C 和 C++ 的 Xcode 项目。使用 -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 文件旗帜。 <Module>-Swift.h
Xcode 生成的文件包括 @import
并检查模块支持。从这个答案中找出标志:https://stackoverflow.com/a/20708695/2570853 .
关于objective-c - 在 objective-C++ 中调用 swift(.mm 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137589/