Java通过JNA调用c++库时传参含有结构体时,只继承Structure是不够的,还需要实现Structure.ByValue,或者强制指定结构体字节对齐。示例如下:
1、c++库中的结构体定义:
2、java中结构体定义:
3、java中调用
如果没有implements Structure.ByValue,或者没有指定字节对齐数目,会导致c++库接收到的结构体数据错乱。
Java通过JNA调用c++库时传参含有结构体时,只继承Structure是不够的,还需要实现Structure.ByValue,或者强制指定结构体字节对齐。示例如下:
1、c++库中的结构体定义:
2、java中结构体定义:
3、java中调用
如果没有implements Structure.ByValue,或者没有指定字节对齐数目,会导致c++库接收到的结构体数据错乱。