dart/FLATTER:从C/C+获取数据数组+;使用外国金融机构? 只涉及调用C++函数并获得单个返回值。 目标

dart/FLATTER:从C/C+获取数据数组+;使用外国金融机构? 只涉及调用C++函数并获得单个返回值。 目标,c++,flutter,dart,language-interoperability,C++,Flutter,Dart,Language Interoperability,如果我在C/C++端创建了一个数据缓冲区,但希望传递到dart/FLIFT端进行显示,该怎么办 问题 根据@MilesBudnek的提示,我正在测试Dart的FFI,尝试将Dart的内存安全释放到C/C++。该测试重用 我可以将数组作为dart指针,但我不清楚如何轻松地将数组作为集合进行迭代 代码 我正在实现一个Dart端C数组绑定,如下所示: 在struct.h struct数组 { int*数组; 内伦; }; 和一对简单的分配/解除分配测试函数: struct数组*get_数组(); i

如果我在C/C++端创建了一个数据缓冲区,但希望传递到dart/FLIFT端进行显示,该怎么办

问题 根据@MilesBudnek的提示,我正在测试Dart的FFI,尝试将Dart的内存安全释放到C/C++。该测试重用

我可以将数组作为dart
指针
,但我不清楚如何轻松地将数组作为集合进行迭代

代码 我正在实现一个Dart端C数组绑定,如下所示:

struct.h

struct数组
{
int*数组;
内伦;
};
和一对简单的分配/解除分配测试函数:

struct数组*get_数组();
int del_数组(结构数组*arr);
然后在
structs.Dart中的省道侧:

typedef get_array_func=指针函数();
typedef del_array_func=无效函数(int arrAddress);
...
final getArrayPointer=dylib.lookup('get_array');
final getArray=getArrayPointer.asFunction();
最终arrayPointer=getArray();
最终数组=arrayPointer.ref.array;
打印('array.array:$array');
这是打印出来的

array.array:指针:地址=0x7fb0a5900000
问题: 我能否轻松地将数组指针转换为
列表
?比如:

final array=arrayPointer.ref.array.toList();
array.forEach(index,elem)=>print(“数组[$idx]:$elem”);
====== 旧问题(您可以跳过此问题) 问题 我不清楚如何通过dart/FLIFT从C/C++中检索此类矢量数据

可能的解决方案 更重要的是,如何将C++的数据从各种线程中推出来? 如果没有内置的支持,我需要马上实现一些通信方案

选项1:联网 我可以通过TCP套接字进行网络连接。但如果有更简单的解决方案,我不愿意去那里

选项2:文件I/O 用C/C++将数据写入文件,让dart/FLIFT对文件进行轮询,并将数据流传送过来。这不是实时友好的

那么,还有更好的选择吗?

解决了这个问题

据英国《每日邮报》报道,API是未来的发展方向

这是我的代码

final getArrayPointer=dylib.lookup('get_array');
final getArray=getArrayPointer.asFunction();
最终arrayPointer=getArray();
最终arr=阵列指针参考arr;
打印('array.array:$arr');
最终arrReal=arr.asTypedList(10);
最终arrType=arrReal.runtimeType;
打印('arrReal:$arrReal,$arrType');
arrReal.forEach((elem)=>print(“数组:$elem”);
这给了我:

array.array:指针:地址=0x7f9eebb02870
arrReal:[0,1,2,3,4,5,6,7,8,9],Int32List
数组:0
阵列:1
阵列:2
阵列:3
阵列:4
阵列:5
阵列:6
阵列:7
阵列:8
阵列:9

我不熟悉dart/FLIFT,但它似乎支持。因此,您将返回指向由C++代码分配的数组的第一个元素的指针,使用DART中的数据,然后将该指针传递回C++代码中的另一个函数以释放内存。例如,查看他们的(尽管他们从未释放该示例中由
malloc
分配的内存)。@MilesBudnek我更新了问题,请看一下好吗?谢谢你之前的提示。