从C++填充节点 v8 Float32Array
Populating a Node v8 Float32Array from C++
我已经查看了文档:
- 浮点32阵列
- 数组缓冲区
- 数组
我正在尝试使用thrust::host_vectofr<float>
填充 v8 浮点数数组,其中dataset[i].vector = thrust::host_vector<float>
使用数组,似乎四舍五入为整数:
Local<Object> obj = Object::New(isolate);
Local<Array> vec = Array::New(isolate, dataset[i].vector.size());
// populate the v8 array (copy)
for (unsigned int k = 0; k < dataset[i].vector.size(); k++)
vec->Set(k, Number::New(isolate, dataset[i].vector[k]));
obj->Set(String::NewFromUtf8(isolate, "vector"), vec);
使用类型化数组,Float32Array
:
Local<Object> obj = Object::New(isolate);
auto vec = Float32Array::New(ArrayBuffer::New(isolate, sizeof(float)), 0, dataset[i].vector.size());
// populate the v8 array (copy)
for (unsigned int k = 0; k < dataset[i].vector.size(); k++)
vec->Set(k, Number::New(isolate, dataset[i].vector[k]));
obj->Set(String::NewFromUtf8(isolate, "vector"), vec);
编译正常,但在执行时崩溃:
*** Error in `node': corrupted double-linked list: 0x000000000734bf50 ***
fish: “node run.js” terminated by signal SIGABRT (Abort)
从C++分配然后填充 v8 Float32Array 的正确方法是什么,以便它可以在 JavaScript 中使用?
我也明白 Node.JS/v8 没有附带float
?
我不确定这是什么版本的 V8(在我看到的 API 文档中没有调用没有上下文的 Set),但在 4.10 上,这工作正常:
auto arr = v8::Array::New(isolate);
(void)arr->Set(context, 0, v8::Number::New(isolate, 2.5));
auto number = arr->Get(context, 0);
printf("%sn", *v8::String::Utf8Value(number.ToLocalChecked()));
打印输出
2.5
将其转换为浮点值也有效:
printf("%fn", ((v8::Number*)*number.ToLocalChecked())->Value());
相关文章:
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 在 G++ v8.2.0 中使用 std::experimental::可选
- 如何为 v8::P ersistent<v8::Function> 创建到 c++ 函数的包装器
- v8::HandleScope::CreateHandle() # 中的致命错误无法在没有 HandleScope 的情
- 如何将节点 V8 字符串转换为 C++ 字符串
- 在 C++ 中嵌入 V8 会导致与 libcpp 相关的"unrecognized external symbol"错误
- 当我使用 V8 库中的 GetInternalField() 时出现分段错误
- 在 v8 JavaScript 中重复调用C++是否有巨大的开销?
- 我可以使用谷歌 v8 在回调函数中获取 JavaScript 函数C++源文本吗?
- 与纯 V8 相比,NodeJS 是否有任何性能缺陷或显著开销?
- V8垃圾收集器回调,用于测量GC活动
- 如何在 C++ 中从 V8 调用 Javascript 函数
- 如何将 v8::FunctionCallbackInfo<v8::Value> 数组从一个隔离复制到另一个隔离?
- 使用导入的函数从嵌入式v8调用webassembly
- v8 源代码中 ArrayMap 函数的回调 fn 参数是什么?
- 如何在 v8 Javascript 中的多个函数中使用相同的上下文?
- 如何使用 v8 本机插件将 C++ 数组交付到 Node.js
- 存储/传递 v8 承诺解析器供以后使用的最佳实践?(结合C++线程)
- v8 不再支持 v8::Value::ToNumber 了吗?
- 从C++填充节点 v8 Float32Array