gpt4 book ai didi

c++ - 使用 Dart 端口将 Float32x4 数组从 native 主机发送到 Dart 虚拟机

转载 作者:行者123 更新时间:2023-11-30 04:08:34 27 4
gpt4 key购买 nike

我正在尝试使用 https://www.dartlang.org/articles/native-extensions-for-standalone-dart-vm/ 中描述的异步(发送/接收端口)模式从我的 native c++ 主机向其嵌入式 dart VM 发送一个大的(~3 MB vector 数据数组)

我的目标是一次性将 Float32x4 的原生 C++ vector 传输到类型化的 dart Float32x4List 对象。

当我尝试发送整数数组时,一切都很好而且很愉快,并且我能够运行教程中的示例,但是当我尝试构建一个 native Dart_CObject 时,如下所示:

Dart_CObject obj;
obj.type = Dart_CObject_kTypedData;
obj.value.as_typed_data.type = Dart_TypedData_kFloat32x4;
obj.value.as_typed_data.values = &myData;
obj.value.as_typed_data.length = myDataLength;
Dart_PostCObject(reply_port_id, &obj);

我得到:

vm/dart_api_message.cc:1105: error: unimplemented code

因为目前似乎只有 Dart_TypedData_kUInt8Dart_TypedData_kInt8 似乎可以进行序列化。

有解决办法吗?即有没有办法将我的 native 数据作为 uint8 blob 推送到 dart VM,并将 dart 中的缓冲区重新解释为 Float32x4List?

最佳答案

您可以将数据作为 Uint8List 发送到 Dart 并使用 Float32x4List.view构造函数将数据重新解释为 Float32x4List。例如

Uint8List data = ...
Float32x4List view = new Float32x4List.view(data.buffer)
...

关于c++ - 使用 Dart 端口将 Float32x4 数组从 native 主机发送到 Dart 虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21738042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com