我想将指针传递给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);
我一直在寻找,我似乎无法找到解决方案。我已经验证,字节数组也填充了适当的数据。我没有正确构建指针吗?有没有更好的方法来创建指针?