在 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
并检查模块支持。从这个答案中找出标志:.
能否调用 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
并检查模块支持。从这个答案中找出标志:.