如何转换已通过的c++;指向java指针或数组的长指针 我有一个长指针,它已经从C++传递给java,它指的是图像数据,现在我想从java中检索这个数组,我怎么做呢? 我拥有的是java中的长ptr

如何转换已通过的c++;指向java指针或数组的长指针 我有一个长指针,它已经从C++传递给java,它指的是图像数据,现在我想从java中检索这个数组,我怎么做呢? 我拥有的是java中的长ptr,java,swing,pointers,wrapper,Java,Swing,Pointers,Wrapper,我尝试了这个代码,但我不知道如何使ptr引用\u指针 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); 根据读取功能,具有以下参数: public void read(long

我尝试了这个代码,但我不知道如何使ptr引用\u指针

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);
根据读取功能,具有以下参数:

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
  • 如您所见,第一个参数是
    复制指针数据的字节偏移量。在你的情况下是0
  • 第二个参数是复制数据的字节数组。在您的例子中,指向实际图像数据的指针,或_指针
  • 第三个参数是目标中的
    数组索引
    ,它将再次为0
  • 第四个参数是要复制的字节数,看起来是2*512*512

  • 希望这能对您有所帮助。

    谢谢Fardad,我会试试这个。它说没有一个合适的方法可以接受int,long,int,int。,当我在第二个参数中放置_指针时发生了这种情况:)我真的对这个API一无所知。我试图从文件中找出答案。如果我浪费了你的时间:)