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

标签 objective-c swift objective-c++

能否在 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 .

enter image description here

关于objective-c - 在 objective-C++ 中调用 swift(.mm 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137589/

相关文章:

c++ - 如何解决出现在 Objective-C++ 而不是 Objective-C 中的链接错误?

c++ - .cpp 文件中的 Objective C 语法?

objective-c - Mac OSX - 如何使用 Cocoa 甚至纯 C 函数获取代理配置?

ios - 如何在 3 个值之间设置 uilabel 文本的动画

ios - Apple Watch coreLocation 错误 *** 断言失败 -[CLLocationManager requestLocation]

ios - Twilio 函数错误 20429 - 太多请求多条短信

swift - 如何将 json 附加到自定义类数组中

ios - 以编程方式验证 MDM 配置文件(配置)是否已成功推送到 iOS 设备?

ios - RxSwift,我如何链接不同的可观察对象

iphone - 类 'Foo' 的重复接口(interface)声明