扫码阅读
手机扫码阅读
Linux 下 JNA 调用动态连接库文件 so
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-jing.png)
BUG弄潮儿
扫码关注公众号
1. JNA
JNA(Java Native Access)是一套Java工具类,允许开发者在运行期动态访问系统本地库(如Windows的dll),无需编写Native/JNI代码。通过在Java接口中描述native library的函数和结构,JNA能够自动实现Java接口到native function的映射。
- 优点:使用JNA可以便捷地调用本地方法,无需额外处理或配置。
- JNA描述:JNA利用一个小型本地类库动态调用本地代码,降低了对平台适配和编码的要求。
- 缺点:JNA建立在JNI之上,可能会有微小的性能损失。
对于深入平台方法的需求,可以使用platform.jar,这是jna.jar的扩展,提供了如FileMonitor等平台相关功能。
2. JNA使用
在pom.xml中引入jna和jna-platform依赖,并注意函数原型必须与链接库中的函数原型保持一致。难点主要在结构体、指针和函数回调的类型映射。
创建TestJna.h和TestJna.cpp头文件,并确保使用extern "C"以匹配方法名。通过命令行工具生成动态连接库so文件,并将其拷贝到/usr/lib目录。
在Java中创建TestJna.java文件,定义接口CLibrary,使用Native.load加载so库,并在main方法中调用add和sub方法。最后,将Java文件打包为可执行jar文件,并执行以得到结果。
示例代码结果表明,使用JNA可以成功调用本地方法,从而证明JNA的实用性。
想要了解更多内容?
![](/theme/default/default/images/main/icon-jing.png)
BUG弄潮儿
扫码关注公众号
BUG弄潮儿的其他文章
制品库 Jfrog Artifactory 搭建私服
1. Jfrog Artifactory 概述JFrog Artifactory 功能最强大的二进制制品仓库
3.Nexus3配置Ubuntu的apt镜像代理
#BUG弄潮儿 3.Nexus3配置Ubuntu的apt镜像代理
@ConditionalOnMissingBean 如何实现覆盖第三方组件中的 Bean
自定义一个简单 spring-boot 组件创建 olive-starter 项目对应的 pom.xml文件
企业DevOps之路:H5项目构建
1. 安装node下载nodehttps://nodejs.org/zh-cn/download/安装nod
Spring RabbitMQ 实现消息队列延迟
1.概述要实现RabbitMQ的消息队列延迟功能,一般采用官方提供的 rabbitmq_delayed_me
加入社区微信群
与行业大咖零距离交流学习
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
软件研发质量管理体系建设
白皮书上线