dart/FLATTER:从C/C+获取数据数组+;使用外国金融机构? 只涉及调用C++函数并获得单个返回值。 目标
如果我在C/C++端创建了一个数据缓冲区,但希望传递到dart/FLIFT端进行显示,该怎么办 问题 根据@MilesBudnek的提示,我正在测试Dart的FFI,尝试将Dart的内存安全释放到C/C++。该测试重用 我可以将数组作为dartdart/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
指针
,但我不清楚如何轻松地将数组作为集合进行迭代
代码
我正在实现一个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我更新了问题,请看一下好吗?谢谢你之前的提示。