Centos环境下Java通过JNA调用C++动态库

一、Centos环境配置

1.Gcc(参考https://blog.csdn.net/qq_40430360/article/details/128675250

2.Gmp(参考https://blog.csdn.net/ShyLoneGirl/article/details/109579797

3.Mpfr(参考https://blog.csdn.net/ShyLoneGirl/article/details/109585306

4.Mpc(参考https://blog.csdn.net/ShyLoneGirl/article/details/109585306

5.Boost(参考https://blog.csdn.net/ShyLoneGirl/article/details/109593624

6.CMake(参考https://blog.csdn.net/ShyLoneGirl/article/details/109599602

7.CGAL(参考https://blog.csdn.net/ShyLoneGirl/article/details/109551578

8.用g++开始编译

创建test.cpp文件

在同目录下运行命令g++ test.cpp -fPIC -shared -o libtest.so -lgmp,生成libtest.so文件

注意!!!

因为g++生成的so文件内部函数名会发生变化,这是g++为了防止符号重名给它生成的新名字。运行nm -g libtest.so查看so文件内的函数名,如果内容过多找不到对应的函数名,可以先把要调用的函数方法内容删掉,再把没用的头文件等删掉,只剩下一个输出cout这类的内容,然后再编译。我原先的函数名是add,so文件里得到的函数名是_Z3addP9GnssPointiPc,记住这个方法名,后面java文件调用的就是这个名称,不然测试时找不到方法!(gcc没有这种情况),知道方法名后再补充方法内容和头文件,再编译生成即可。

9.安装java环境(参考https://blog.csdn.net/Deng872347348/article/details/126822735

二、Java通过JNA调用C++动态库

1.java代码里添加jna依赖,修改pom.xml文件

<dependency>
	<groupId>net.java.dev.jna</groupId>
	<artifactId>jna</artifactId>
	<version>5.7.0</version>
</dependency>

2.创建一个接口,该接口继承Library

3.创建一个实现类(先不运行)

4.打包,将生成的包放到LINUX服务器上

5.运行jar包,并测试

curl 测试一下

成功!! 

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值