c++ jna 数据类型_JNA 使用总结

本文介绍了使用JNA调用C++代码的经验,包括JNA的基本概念、C++与Java数据类型的映射难点、结构体映射的实现方式以及在实际应用中遇到的小坑。通过示例展示了如何映射C++的函数和结构体,并总结了学习JNA的过程和国家职业教育改革的相关政策。

引言

新系统起步,带领两个可爱的小组员李宜衡、潘佳琦一起学习、讨论、编码。

系统中使用了JNA调用C++代码。

之前对这项技术也只是听说过,也没用到过。

以前帮同学调试过调用百度地图SDK一个地图项目,那个项目中就用到了百度地图提供的.so文件(动态链接库,Linux下为.so,Windows下为.dll),只是当时用的时候是直接调百度封装好的代码,也没有手动调用的机会。

clipboard.png

参考潘老师给出的示例代码,再配合他人的博客,一步步完成功能。感谢开源,感谢如此之多热爱分享技术的人。

本文可能有些枯燥,但JNA的例子好像也举不出什么有意思的。

JNA

C++

在学校学过C++,也不陌生了,但是当我打开头文件时,才发现,原来我学的不叫C++!(考高分有什么用呢?)

C++太伟大了,甚至连它的设计者都不敢说能完全掌握C++。

clipboard.png

其实去看看我们平常使用的类,原来我们和C++息息相关。

clipboard.png

JDK中就有一些使用C++实现的原生方法。

C++的好处不必说,就是快。目前对性能要求很高的主流系统会采用C++或Go作为开发语言。

这里我们使用并不是因为性能,而是需要通过调用动态链接库来使用已经编写好的基础服务。

JNA

Java Native Access,拥有4600多Star的流行项目,我们可以使用其进行使用Java对C++的访问。

clipboard.png

Github地址:JNA – Github

这个README写的挺好的,就是太枯燥了(至少我是看着看着就困了),如果是首次接触的话,不建议通过README来入门。可以去看看有关这方面的博客,虽然年代久远,但质量都是非常高的。

映射

JNA最大的难点就是:C++和Java的数据类型不同,如何在两种语言之间进行映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值