小编Phi*_*ter的帖子

JNA二维数组

我尝试用JNA在C中调用短**.

C看起来像这样:

void compute(short** in, int row, int col) {
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            printf("in[%d][%d] = %d\n", i,j, in[i][j]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 从JNA传递短[] []不起作用.

  • JNA文档说"要映射本机多维数组,使用一维Java数组",但它不起作用.打电话的时候

    'nativeLib.compute(new short [] {1,2,3,4},2,2); 我得到:java.lang.Error:com.sun.jna.Native.invokeVoid(本机方法)的内存访问无效

  • 似乎需要一个PointerByReference,我试图用PointerByReference填充PointerByReference,它包含短值,但它不起作用:

    Pointer pointerOfArray = new Memory(row * col * Native.getNativeSize(Short.TYPE));
    for(int i=0;i<row;i++) {
    
        Pointer pointer = new Memory(col * Native.getNativeSize(Short.TYPE));
        for(int j=0;j<col;j++) {
            pointer.setShort(j*Native.getNativeSize(Short.TYPE), in[i][j]);
        }
        pointerOfArray.setPointer(i*row*Native.getNativeSize(Short.TYPE), pointer);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 我也尝试过:

        Pointer pointer = new …
    Run Code Online (Sandbox Code Playgroud)

java jna

6
推荐指数
1
解决办法
1437
查看次数

标签 统计

java ×1

jna ×1