【发布时间】:2022-01-01 12:01:42
【问题描述】:
我正在尝试从 dart 调用 C 库。 C代码作为生成器方法如
a_struc create_struct(void);
然后是接受结构指针的方法,例如:
const char *
get_info(const a_struc * s);
我已经使用 ffigen 创建了飞镖绑定
class a_struct extends ffi.Struct {
}
a_struct create_struct() {
return create_struct();
}
late final create_structPtr =
_lookup<ffi.NativeFunction<a_struct Function()>>(
'create_struct');
late final create_struct =
create_structPtr
.asFunction<a_struct Function()>();
和
ffi.Pointer<ffi.Int8> get_info(
ffi.Pointer<a_struct> a_struct,
) {
return get_info(
a_struct,
);
}
late final get_infoPtr = _lookup<
ffi.NativeFunction<
ffi.Pointer<ffi.Int8> Function(
ffi.Pointer<a_struct>)>>('rcl_publisher_get_topic_name');
late final get_info =
get_infoPtr.asFunction<
ffi.Pointer<ffi.Int8> Function(ffi.Pointer<a_struct>)>();
我的问题是我不知道如何从create_struct生成的darta_struct调用方法get_info。事实上,get_info 需要一个 ffi.Pointer<a_struct>,但我只生成一个没有指针的 a_struct。由于 dart 已弃用 .addressOf,我如何从 create_struct 获取 ffi.Pointer<a_struct>?
【问题讨论】:
标签: c flutter dart ffi dart-ffi