使用dart端口发送Float32x4阵列以从本机主机启动VM

时间:2014-02-12 19:44:52

标签: c++ dart

我正在尝试使用https://www.dartlang.org/articles/native-extensions-for-standalone-dart-vm/

中描述的异步(发送/接收端口)模式向我的原生c ++主机发送大量(~3 MB矢量数据阵列到其嵌入式dart VM)

我的目标是一次性将Float32x4的原生c ++矢量传输到类型化的飞镖Float32x4List对象。

当我尝试发送整数数组时,一切都很顺利,我能够在教程中运行示例,但是当我尝试构建原生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:错误:未实现的代码

由于目前似乎只有Dart_TypedData_kUInt8Dart_TypedData_kInt8似乎已准备好进行序列化。

有解决办法吗?即,有没有办法将我的原生数据作为uint8 blob推送到dart VM,并将该缓冲区重新解释为飞镖中的那个缓冲区?

1 个答案:

答案 0 :(得分:2)

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

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