无法将 .mm 文件访问到 swift4

Not able to access .mm file into swift4

我正在开发一个包含 Objective C、Objective C++ 和 Swift4 classes 的项目。我正在尝试将 .mm 文件(即 Objective C++ 文件)访问到 swift class 中,但它给了我一个错误并显示它未声明。我在项目中添加了桥接 header 并在那里导入了 Objective C++ 文件的 header。

理解问题的例子:

我有 A.mm class,其中导入了 B.mm class。将 A class 添加到桥接 header 后,编译器在 B class.

中给出错误

B.h 中的错误:

请帮忙

Swift只能桥接到C和Objective-C。如果您丢失的 class 在其 header 中使用 C++ 类型,Swift 将无法读取该文件并跳过 class.

您能否更改 Objective-C++ class 以便它仅在其 .mm 文件中而不在其 .h 文件中使用 C++ 类型?然后它看起来像一个普通的 Objective-C class 到 Swift 你应该可以使用它。

或者,您可以创建第二个 class,它是 ObjC“在外面”,并在其 .mm 中调用 ObjC++ class,它只是传递所有调用, 将 C++ 数据类型转换为简单的 C 类型或 ObjC objects.

查看“class 扩展”以声明 C++ 属性和实例变量,这些属性和实例变量通常会进入 .mm 文件中的 header。