这是我正在使用的C API中结构的定义:
typedef struct {
int nADs;
int** mPIAD;
} LSO;
int CalcTheValue(int numMats;
LSO* returnValue);
mPIAD"实际上"是一个二维数组,其中nADS是第一维,第二维是numMats。
目前,我的JNA定义如下:
public static class t_LdvSummaryOutput_v1 extends Structure {
public int numADs;
public Pointer mPIADs; // int**
}
使用 Eclipse 调试器,我看到 mPIADS 中的数据不是我所期望的。 我应该得到个位数的整数作为返回值,但我看到的整数值非常大。
我应该将 mPIAD 声明为 public Pointer[] mPIADs
吗?
由于指针实际上是一个指针数组,因此您可以使用Pointer.getPointerArray
:
// t_LdvSummaryOutput_v1 output;
Pointer[] mPIADs = output.mPIADs.getPointerArray(0, output.numADs)