0
我有在C结构,我想在Java中表示与JNA:如何正确初始化JNA中`Structure`的数组字段?
typedef struct SmallStrcut {
unit32_t a[128];
}
typedef struct BigStruct {
SmallStruct b;
SmallStruct c;
}
而下面的功能:
void getBigStruct(BigStruct bigStruct);
我在Java中,以下的Structs:
SmallStruct:
public class SmallStruct extends Structure {
public static ByValue extends SmallStruct implements Structure.ByValue {
public int a[];
public ByValue() {}
}
}
BigStruct:
public class BigStruct extends Structure {
public static ByValue extends BigStruct implements Structure.ByValue {
public SmallStruct b;
public SmallStruct c;
public ByValue() {}
}
这是我的主:
BigStruct.ByValue big = new BigStruct.ByValue();
SmallStruct.ByValue x1 = new SmallStruct.ByValue();
x1.a = new int[128];
x1.a[0] = 123;
SmallStruct.ByValue x2 = new SmallStruct.ByValue();
x2.a = new int[128];
x2.a[0] = 456;
big.b = x1;
big.c = x2;
当我调试代码我看了BigStruct对象,只有 B会员被初始化。 c数组全部为零。它像第一个SmallStruct一样包围第二个SmallStruct内存区域。
我该如何转移两个SmallStruct来正确构造BigStruct?