我是JNI的新手,并努力实现一项要求。我有
使用NewDirectByteBuffer()
API和JNI在JNI中分配直接缓冲区
想要访问Java端的缓冲区。
我所做的是我已经分配了一个本机内存并在该缓冲区中存储了一些数据。然后我使用NewDirectByteBuffer()
API将该内存空间包装在直接缓冲区对象中。
然后从JAVA读取该内存中的数据,我将该直接缓冲区对象(BufferObject
)返回到java端,并使用BufferObject.get()
方法读取。
但无法设法获取我存储在直接缓冲区中的数据。请允许我这样读取使用NewDirectByteBuffer()
创建的直接缓冲区对象的数据是否正确?
答案 0 :(得分:2)
我一直在做的事情(这并不意味着最好的方式)是
ByteBuffer.order(ByteOrder.nativeOrder())
,以便以本机字节顺序读取/写入数据。即。我尽可能少地使用本机代码。 ;)
但无法设法获取我存储在直接缓冲区中的数据。
不幸的是,这可能意味着什么。
尽可能在Java中执行操作的部分原因是它简化了调试。