JNA:C结构的Java等价物,包含另一个结构变量的结构
我需要帮助定义JAVA JNA等价于C结构,其中每个结构包含另一个结构变量
代码
typedef struct algorithm_list {
unsigned char num_of_alg;
unsigned short *algorithm_guid[];
} algorithm_list_t;
typedef struct key_data {
unsigned char *key;
unsigned short key_length;
algorithm_list_t *algorithms;
} key_data_t;
typedef struct key_array {
unsigned char read_byte;
unsigned char number_of_keys;
key_data_t *keys[];
} key_array_t;
我无法正确地定义这些结构的JAVA JNA等价物,因为我所实现的东西给了我无效的内存访问错误
# 1 楼答案
这些都没有
struct
字段。请记住[]
比*
绑定得更紧密(优先级更高),分别有一个指向short的指针数组、一个指向struct
的指针(或者更可能是指向struct
的连续数组的指针)和一个指向struct
的指针数组指针类型最简单的映射是
Pointer
。一旦你开始工作,你就可以把它细化到一个更具体的类型struct*
应该使用Structure.ByReference
作为字段类型,这些字段的数组应该是Structure.ByReference[]
如JNA FAQ中所述(为了简洁起见,省略
getFieldOrder()
和构造函数):