如何将const void *传递给node.js?

我正在扩展node-libspotify的libspotify包装以支持专辑封面图片。 到目前为止,我有以下工作的C – 绑定代码:

static Handle<Value> Album_Cover(const Arguments& args) { HandleScope scope; // test arguments sanity assert(args.Length() == 2); assert(args[0]->IsObject()); // sp_session assert(args[1]->IsObject()); // sp_album ObjectHandle<sp_session> *session = ObjectHandle<sp_session>::Unwrap(args[0]); ObjectHandle<sp_album> *album = ObjectHandle<sp_album>::Unwrap(args[1]); const byte *image_id = sp_album_cover(album->pointer, SP_IMAGE_SIZE_LARGE); size_t image_size; const void *image_data; if(image_id) { sp_image *image = sp_image_create(session->pointer, image_id); image_data = sp_image_data(image, &image_size); sp_image_release(image); } return scope.Close(image_data); } 

我在最后一行挣扎:如何在运行scope.Close(...)时将原始图像数据传递给node.js?

感谢任何的意见。

你应该把它包装在v8 :: Value中,因为v8::HandleScope::Close需要一个句柄作为参数。

我猜v8::String应该这样做 – v8 :: String Class Reference

 scope.Close(String::New((const char*)image_data, image_size)); 

一个v8::Array也可能是有用的 – 这一切都取决于你将如何使用返回的值。

我希望这有帮助。