【发布时间】:2021-03-18 15:16:52
【问题描述】:
我正在尝试导入一个 64kb 的 C 数组,作为设备上日志的循环缓冲区。当我尝试在 Swift 中访问这个数组时,我遇到了错误
“记录”类型的值没有成员“数据”
为了尝试回答有关桥接的潜在问题,我使用了导入的 C 库中的其他类型,这些类型定义在该模拟代码所源自的同一文件中。
代码设置如下:
logging.h:
typedef struct _logging {
uint8_t data[64*1024];
} logging;
在ReadLog.swift:
struct ReadLog {
var log: logging = logging()
func read() {
//...Do some stuff...
let char = log.data.0 // <- Error here 'Value of type 'logging' has no member 'data'
}
}
将数据大小更改为 256 导入此成员没有问题。 (我不知道截止点是多少)。
处理这个问题的最佳方法是什么?
【问题讨论】:
-
我认为你的
log变量应该是一个指针,看这个:stackoverflow.com/questions/24050942/swift-use-c-struct -
谢谢,我试试看。
-
头文件里面有什么? Swift 看不到标题中没有的内容。我不认为它必须是一个指针。
-
@Sulthan 我已将示例更新为标题。