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;
}
}
}
您將獲得預期的大?。?
添加回答
舉報