2016-02-03 2 views
0

C++ Я посмотрел в документации:Наполнение Узла v8 Float32Array из

Я пытаюсь заполнить v8 массив поплавки, с использованием thrust::host_vectofr<float>, где 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) 

Что такое правильный подход к распределению, а затем заселение v8 Float32Ar ray из C++, чтобы его можно было использовать в JavaScript?

Я также понимаю, что Node.JS/v8 не поставляется с float?

ответ

1

Я не уверен, что версия V8, который (вызывающему Set без контекста не в API Docs, я вижу), но на 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("%s\n", *v8::String::Utf8Value(number.ToLocalChecked())); 

печатает

2.5 

Преобразование его в значение с плавающей запятой также работает:

printf("%f\n", ((v8::Number*)*number.ToLocalChecked())->Value()); 
+0

Whats 'context' в этом случае? Я использую узел 5.4.0 –

+0

Я ничего не знаю об узле. context - объект v8 :: Context. Вызов, который я использую, является вторым сверху: http://v8.paulfryzel.com/docs/master/classv8_1_1_object.html – xaxxon

+0

где находятся документы для node.js api, которые вы используете? – xaxxon

Смежные вопросы