Java通过JNI实现调用C++动态链接库(.so)

@[TOC](Java通过JNI实现调用C++动态链接库(.so /.dll))

Java通过JNI实现调用C++动态链接库(.so)

最近需要将一个Ubuntu系统上搭建的C++项目转到Java上面实现,由于原来的项目比较复杂,并且需要调用一些第三库(Ceres,Eigen),因此直接用Java语言实现的话,很多第三方库无法替代。因此,考虑通过JNI调用C++动态链接库的方式实现Java调用c++函数。 在这里申明一个新定义的函数作为主函数,在原来cpp里面去调用其他的函数,这样编写Java比较方便,同时对原cpp文件改动较少。其实也可以重新建一个cpp文件,如何调用原来项目cpp文件里面定义的函数,这样的好处是不改动源代码。

方法思路:Java+cpp内部定义新函数**

1、Java文件申明一个native函数,目的是在cpp里面调用原函数;
2、Java里面加载动态链接库(.so)入口;

public class INSVLP {
   static {
      System.loadLibrary("insvlpcc"); // Load native library at runtime
   }
   public native void PosCal(String filePath);
   public static void main(String[] args) {
         String cd= System.getProperty("user.dir");  
         String path0=cd+"/config/simu.yaml";
         INSVLP Insvlp=new INSVLP();
         Insvlp.PosCal(path0);  // invoke the native method
   }
}

3、通过JNI工具生成 .h 文件;

javac  INSVLP.j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值