我正在尝试从 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>)>();
我的问题是我不知道如何get_info
从a_struct
. create_struct
确实,get_info
期望 affi.Pointer<a_struct>
但我只生成a_struct
没有指针的 a 。由于 dart 已弃用.addressOf
,我如何获得ffi.Pointer<a_struct>
from create_struct
?