代码之家  ›  专栏  ›  技术社区  ›  Jarvis The Avenger adri

无法访问swift4中的.mm文件

  •  -1
  • Jarvis The Avenger adri  · 技术社区  · 6 年前
    我正在研究一个包含目标C、目标C++和SWIFT4类的项目。我试图访问.mm文件(即目标C++文件)到Swift类,但它给了我一个错误,并显示它未声明。我为项目添加了一个桥接头,并在其中导入了目标C++文件的头。

    理解问题的示例:

    我有一个A.MM班,里面有进口的B.MM班。在将类添加到桥接头之后,编译器将在B类中给出错误。

    B.H.错误:

    请帮助

    理解问题的示例:

    我有一个A.MM班,里面有进口的B.MM班。在将类添加到桥接头之后,编译器将在B类中给出一个错误。

    B.h错误:

    enter image description here

    请帮助

    1 回复  |  直到 6 年前
        1
  •  1
  •   uliwitness    6 年前

    SWIFT只能桥接C和Objto-C。如果您丢失的类在其头中使用C++类型,则Swift将无法读取该文件并跳过该类。

    你能改变你的ObjuleC++类,所以它只在它的.mm文件中使用C++类型,而不在它的.h文件中使用C++类型?那么,对于Swift来说,它将像一个常规的Objective-C类,并且您应该能够使用它。

    或者,您可以在外部创建一个Objc的第二类,并在其.mm中调用Objc++类,并且只需遍历所有调用,将C++数据类型转换为简单的C类型或Objc对象。

    查看类扩展,用于声明C++属性和实例变量,这些变量通常会在.mm文件中添加到您的头中。