C++ 从本机分配的内存位置实例化dart ffi.struct

C++ 从本机分配的内存位置实例化dart ffi.struct,c++,dart,ffi,C++,Dart,Ffi,我对ffi和dart内存模型的理解有些有限。因此,请提前为误用术语和/或无意中的迟钝道歉 我所拥有的: 本机(C++端)结构定义 dart/ffi侧匹配结构定义 能够调用本机函数,该函数返回指向已分配结构的指针,ffi会相应地对其进行映射 我想要的是: 在dart端,直接将指针映射到本机对象的方法 我可以调用一个本机端函数,返回指向已分配结构的指针,并让dart ffi库将其映射到dart等效对象。比如说: typedef _process_func_native = ffi.Poin

我对
ffi
和dart内存模型的理解有些有限。因此,请提前为误用术语和/或无意中的迟钝道歉

我所拥有的:

  • 本机(C++端)结构定义
  • dart/ffi侧匹配结构定义
  • 能够调用本机函数,该函数返回指向已分配结构的指针,ffi会相应地对其进行映射
我想要的是:

  • 在dart端,直接将指针映射到本机对象的方法

我可以调用一个本机端函数,返回指向已分配结构的指针,并让dart ffi库将其映射到dart等效对象。比如说:

typedef _process_func_native = ffi.Pointer<ProcessResult> Function(ffi.Int64);
typedef _process_func_dart = ffi.Pointer<ProcessResult> Function(int);
final _process_func_dart _process_data = _lib
    .lookup<ffi.NativeFunction<_process_func_native>>('process_data')
    .asFunction();
typedef\u process\u func\u native=ffi.Pointer函数(ffi.Int64);
typedef _process _func _dart=ffi.指针函数(int);
最终(进程)函数(程序)(数据)=(库)
.lookup('process_data')
.asFunction();
其中,
ProcessResult
是扩展
ffi.Struct

假设我可以访问由本机端分配结构的内存位置。如何在dart中直接访问此文件



问这个问题就像是在逃避现实,我在写作时找到了答案。我还是会把这个问题和答案一起贴出来。对这个问题如此简单感到惊喜,也许也觉得有点傻。如果您认为这个问题没有多大影响,请随意投票删除它。

您可以使用以下方法直接映射这样一个指针:

ffi.Pointer.fromAddress(地址);
ffi.Pointer<ProcessResult>.fromAddress(address);