ios - 无法将 .mm 文件访问到 swift4
问题描述
我正在开发一个包含 Objective C、Objective C++ 和 Swift4 类的项目。我正在尝试将 .mm 文件(即 Objective C++ 文件)访问到 swift 类中,但它给了我一个错误并显示它未声明。我在项目中添加了一个桥接头,并在那里导入了 Objective C++ 文件的头。
理解问题的示例:
我有 A.mm 类,其中导入了 B.mm 类。将 A 类添加到桥接头后编译器在 B 类中给出错误。
Bh 中的错误:
请帮忙
解决方案
Swift 只能桥接到 C 和 Objective-C。如果您丢失的类在其标头中使用 C++ 类型,Swift 将无法读取该文件并跳过该类。
您能否更改您的 Objective-C++ 类,使其仅在其 .mm 文件中使用 C++ 类型,而不在其 .h 文件中使用?然后它看起来就像一个普通的 Swift 的 Objective-C 类,你应该可以使用它。
或者,您可以创建第二个“在外部”是 ObjC 的类,并在其 .mm 中调用 ObjC++ 类,然后只处理所有调用,将 C++ 数据类型转换为简单的 C 类型或 ObjC 对象。
查看“类扩展”以声明 C++ 属性和实例变量,这些属性和实例变量通常会进入 .mm 文件的标头中。
推荐阅读
- postgresql - 如何使用 Fluent 从 Vapor 3 中的同一个表中进行两个 JOIN 查询?
- opencv - 在 OpenCV 中使用 GPU
- keycloak - greenmail - keycloak connection doesn't work
- ruby-on-rails - Rails 5.1.4 + psql, ActiveRecord bizarre double transaction BEGIN, when expecting one
- java - What is the difference between ContextCompat.startForegroundService(context, intent) and startforegroundservice(intent)?
- matlab - Loading chunks of large binary files in Matlab, quickly
- php - 将不同的文件下载到请求的 php
- java - 使用任何传递的参数模拟返回
- android - 如何在tablayout中添加按钮点击?
- javascript - Axios - 无法在对象中设置和获取数据