2017-05-25 3 views
0

要するに、私はuint8_t配列になる操作を完了するアドオンを持っています。この配列とその内容をArrayBufferに変換して返す必要があります。C++ Node.js addonからArrayBufferにデータを読み書きする方法?

逆に、アドオンはArrayBufferを入力として受け入れることができ、その内容と一緒にuint8_tアレイに変換する必要があります。

これを行う方法に関する明確な文書を見つけるのが難しいです。私はNode、v8、addonsなどを初めて使っています。もし誰かがこれをやる方法を知っていて、それが私を助けてくれるなら、それはすばらしいでしょう。

答えて

1

あなたはメモリの既存のブロックからArrayBufferを作るためにArrayBuffer、しかし...

の代わりにUint8Arrayと協力することが必要になる場合があります

// given void* data 
v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(
    Isolate::GetCurrent(), data, byte_length, ArrayBufferCreationMode::kInternalized) 

Docs are here.最後の引数を制御している場合ArrayBufferがGCされたときメモリブロックはfree 'd v8である。 kInternalizedを使用する場合は、メモリをfreeで解放する必要があります。

ArrayBufferのメモリバッキングを取得するには、ab->GetContents()を使用します。これはvoid* Data()メソッドを持つContentsクラスインスタンスを返します。

追加の例はhttps://stackoverflow.com/a/31712512/1218408を参照してください。

+0

Uint8Arrayが優先されますが、この特定の実装では、プログラムがArrayBufferを返さなければならないと指定されています。 残りについては、私はそれを理解することになりましたが、kInternalizedは私には新しいものでした。ありがとうございました。 –

関連する問題