0

我有一个从 c++ 传递到 java 的长指针,它引用图像数据,现在我想从 java 中的这个指针中检索数组,我该怎么做我所拥有的是 java 中的 long ptr

我试过这段代码,但我不知道如何让 ptr 引用 _pointer

long _pointer=Image.GetCptr();
com.sun.jna.Pointer ptr = new com.sun.jna.Memory(2 * 512 * 512);
short testarr[] = new short [512 * 512];
ptr.read(_pointer, testarr, 0, testarr.length);
4

1 回答 1

1

根据jna.java.net 文档读取函数有以下参数:

public void read(long offset,
             byte[] buf,
             int index,
             int length)

Indirect the native pointer, copying from memory pointed to by native pointer, into the specified array.

Parameters:
    offset - byte offset from pointer into which data is copied
    buf - byte array into which data is copied
    index - array index from which to start copying
    length - number of elements from native pointer that must be copied
  1. 如您所见,第一个参数是byte offset from the pointer data is copied. 在你的情况下0。
  2. 第二个参数是byte array the data is copied。在您的情况下,指向实际图像数据的指针或_pointer。
  3. 第三个参数array index in destination将再次为 0。
  4. 第四个参数要复制的字节数似乎是 2*512*512。

希望这对您有所帮助。

于 2013-01-06T07:40:49.790 回答