1 回答
TA贡献1794条经验 获得超7个赞
在 中JNA
,Java char 可以映射为16-bit
或32-bit
字符。
这意味着您拥有:32/8 * 4 = 16
https://github.com/java-native-access/jna/blob/master/www/Mappings.md
在你的机器上尝试这样的事情
int main() { printf("%ld\n",sizeof(wchar_t)); }
更新
正如@Daniel 提到的,值得注意的是,C
基于映射char
应该通过byte
.
对于这门课
interface CLibrary extends Library {
public CLibrary.Data.ByVal GetDataValue();
public CLibrary.Data.ByRef GetDataAllocated();
public class Data extends Structure {
public static final List<String> FIELDS = List.of("array");
public static class ByVal extends Data implements Structure.ByValue {}
public static class ByRef extends Data implements Structure.ByReference {}
public byte[] array = new byte[4];
@Override
protected List<String> getFieldOrder() {
return FIELDS;
}
}
}
您将获得预期的大小:4
添加回答
举报