javaとC++コードを混在させる必要があります。 java部分はjava.nio.ByteBufferを割り当て、C++部分はenv-> GetDirectBufferAddress(バッファ)をjbyte *としてアドレスを取得し、データを埋め込みます。JNI GetDirectBufferAddressとByteBuffer.array()
ByteOrderは問題ありません。データをJavaでbuffer.get().getLong()などで取得できます。
ただし、buffer.array()メソッドは失敗し、hasArray()はfalseを返します。 .allocateDirect(size)の代わりにbuffer.allocate(size)を使用すると、array()メソッドは正常に動作しますが、C++コードはNULLのDirectBufferAddressを取得して失敗します。
私の質問:データのコピーを最小限に抑えながら、両方の世界をどのように組み合わせるとよいでしょうか? または、Javaバイト[]をネイティブのC++データで簡単に埋める方法は?
良いヒントByteBufferの範囲を超えて注意してください。 既存のC++コードに触れることを躊躇し、 "research" GetPrimitiveArrayCritical()は言い訳ではありません;) – datafiddler