博客
关于我
jna 调用c++ dll 返回复杂结构体
阅读量:305 次
发布时间:2019-03-03

本文共 605 字,大约阅读时间需要 2 分钟。

经过折腾,确定,在java中定义同样的结构体,如c++中

struct Location {	int nums;	int arr[10];//数组的传递。不能用int *,因为jna的IntByReference.getValue()只能返回一个值};

在java中的定义为

public static class Location extends Structure{            public int nums;            public int[] arr=new int[10];            @Override protected List getFieldOrder() {                return Arrays.asList(new String[]{"nums","arr"});            }        }

dll中函数定义为、

DLL_EXPORT void get_location_message(double,double,Location &);

返回值用引用类型

java中直接调用

CLibrary.Location l=new CLibrary.Location();CLibrary.INSTANCE.get_location_message(lat,lon,l);

这样返回的Location就没有问题了。

转载地址:http://rtim.baihongyu.com/

你可能感兴趣的文章
MySQL 备份 Xtrabackup
查看>>
mysql 多个表关联查询查询时间长的问题
查看>>
mySQL 多个表求多个count
查看>>
mysql 多字段删除重复数据,保留最小id数据
查看>>
MySQL 多表联合查询:UNION 和 JOIN 分析
查看>>
MySQL 大数据量快速插入方法和语句优化
查看>>
mysql 如何给SQL添加索引
查看>>
mysql 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>