Java / JNA希望创建一个字节数组的指针,以传递给期望LPSTR参数的本机方法

时间:2015-07-24 20:47:13

标签: java jna

我想将指针传递给byte []数组,传递给本机 常规。我没有任何修改本机代码的能力。我只能利用它。

该方法需要一个LPSTR数据类型的图像。我看过其他消耗本地例程的C代码。 它们似乎传递了一个字节数组。

因此,我的过程是获取缓冲的图像对象,获取图像的相应字节数组,并尝试将其传递给本机例程。 我试图直接传递数组,我试图将数组写入Memory,并且我也试图传递一个bytebuffer。我仍然一直收到“无效的内存访问”异常。

使用记忆类:

byte[] imageBytes = getImageBytes(image);
Pointer imagePointer = new Memory(imageBytes.length);
imagePointer.write(0, imageBytes, 0, imageBytes.length);
nativeInterface.SendImageData(port, imagePointer, x, y, w, h);

使用ByteBuffer:

ByteBuffer bBuffer = ByteBuffer.allocateDirect(imageBytes.length);
bBuffer.put(imageBytes);
Pointer imagePointer = Native.getDirectBufferPointer(bBuffer);
return cspStatInterface.SendImageData(port, imagePointer, x, y, w, h);

直接传递字节数组:

byte[] imageBytes = getImageBytes(image);
nativeInterface.SendImageData(port, imageBytes, x, y, w, h);

我一直在寻找,我似乎无法找到解决方案。我已经验证,字节数组也填充了适当的数据。我没有正确构建指针吗?有没有更好的方法来创建指针?

0 个答案:

没有答案