一、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 测试一下
成功!!