细数Java使用JNA或者JNative在调用C++函数的过程中所遇到的坑以及个人解决办法

本文介绍了在Java项目中使用JNA和JNative调用C++ SDK时遇到的问题及解决方案。首先,文章解释了JNA的基本原理和用途,然后详细描述了在加载本地库、函数名匹配和处理C++编译后的函数名问题上遇到的挑战。在解决函数名改变的问题时,推荐了Dependency Walker工具。最后,由于JNA在处理特定C++特性时的限制,作者转向了JNative,并简述了它的使用方法和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在最近的项目中又遇到了一个个人感觉有点摸不着头脑的事情(也许是因为个人原因懈怠了。。。。。。)。最“eggache”的一件事情就是又双叒叕遇到了前端页面视频对接的坑(本猿着实没了解过啊T-T)。

本着求教的一脸呆萌像从我师傅那里了解到了“JNA”。。(框架?类库?一头雾水ING)是基于JNI,能够让JAVA程序员写更少的代码去调用系统本地库。这我就很喜欢了:)(write less do more~~~haha)

话不多说,

先介绍一下JNI是什么鬼:JNI_百度百科

再介绍一下JNA是什么鬼:JNA(其他)_百度百科

简单说明一下,在本人的项目中,原先设计是需要使用java去调用供应商  “‘西边’‘伟力’”  提供的sdk(只有C++一个版本的sdk、只有C++一个版本的demo。。为何这么cuo)中的函数,获取视频流对象,封装成服务,供前端使用。但是鉴于某些原因,此设计被废弃了。。(美其名曰“节约成本”)。最后根据一位前辈给出的一个建议,并结合实际业务需求,就设计出了一个很奇葩的东西。。。可以脑补一下“写了个ocx插件集成到ie浏览器中,某些原因前端展示只能用谷歌。。那就得注册个控件,让谷歌浏览器能打开IE浏览器,其他展示在谷歌浏览器中操作,看视频单独拉个IE浏览器播放”,额,意不意外?神不神奇?

话不多说回归正题:

首先得承认“JNA”是个很好用的类库,会让我感到神奇,能在java中去操作指针(是本人才疏学浅,各位大佬轻喷)。。。使用的大致流程网上的技术贴都有,我就不赘述,挑选了一个我觉得不错的贴。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值