Javascript 将数组从node.js传递到c++;v8使用NAN 我在NoDE.js中包含一个C++库。我知道如何在两者之间来回传递数字和字符串,但我不知道如何传递数组。我想做的是这样的: var buffer = new Buffer([10, 20, 30, 40, 50]);

Javascript 将数组从node.js传递到c++;v8使用NAN 我在NoDE.js中包含一个C++库。我知道如何在两者之间来回传递数字和字符串,但我不知道如何传递数组。我想做的是这样的: var buffer = new Buffer([10, 20, 30, 40, 50]);,javascript,c++,node.js,node-gyp,node.js-addon,Javascript,C++,Node.js,Node Gyp,Node.js Addon,index.js var test = require('bindings')('test'); var buffer = [0,0,0,0,0,0.1,0,0,0,0,-0.1]; test.encode(buffer, buffer.length); test.cc var encoder = new Encoder(); NAN_METHOD(Encode){ //the next line is incorrect, I want to take the buffer a

index.js

var test = require('bindings')('test');

var buffer = [0,0,0,0,0,0.1,0,0,0,0,-0.1];
test.encode(buffer, buffer.length);
test.cc

var encoder = new Encoder();

NAN_METHOD(Encode){

    //the next line is incorrect, I want to take the buffer array and pass it as a pointer to the encodeBuffer() function
    Local<Number> buffer = args[0].As<Number>();

    //get the integer value of the second argument
    Local<Number> buffer_length = args[1].As<Number>();
    int bl_int = buffer_length->IntegerValue();

    //call function
    encoder.encodeBuffer(buffer, bl_int);
}

void Init(Handle<Object> exports) {
  exports->Set(NanNew("encode"), NanNew<FunctionTemplate>(Encode)->GetFunction());
}

我试着看了一下文档,但是他们没有提到指针和数组。。我遗漏了什么吗?

假设你有一个缓冲区,我通常是这样传递的:

var buffer = new Buffer([10, 20, 30, 40, 50]);
然后将其传递给扩展:

Extension.to_image(buffer, buffer.length
在我的母语代码中:

 NAN_METHOD(to_image) {
   unsigned char*buf = (unsigned char*) node::Buffer::Data(args[0]->ToObject());
   unsigned int size = args[1]->Uint32Value();

正如您在结尾处看到的,强我有一个缓冲区,缓冲区长度转移到我的C++代码。

这是一篇好文章:


还有一个很好的回答:

嘿@nevos我的回答对你有帮助吗?是的@JohnSmith,谢谢!嗨@nevos我没有测试,但我想是的!:)是否可以直接从args[0]传递以获取长度?