Java调用C++动态链接库——Jni

2022/9/7 14:54:55

本文主要是介绍Java调用C++动态链接库——Jni,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

最近项目需要,将C++的算法工程编译成动态链接库,交给 Java后台当作函数库调用。就去了解了下Jni。使用起来还是比较方便的。

1.  首先编写Java的调用类。例如:

  

public class TestJni(){
    static{
        System.loadLibrary("TestJinDll");                            //这个名字随便起,跟C++生成的DLL对应就行
    }
    
    public  static native String callFun(String paramStr);           //具体的调用方法。
}

2.  导出这个类的.h文件,也就是头文件。可以用命令行生成也可以通过IDEA编辑个工具,这样以后修改直接生成就可以了。就是这样:

使用的时候就 文件上右键--> external tools-->javah.就可以了。这时就生成了一个头文件。类似于这样⬇️:

这里边的东西不要改。

3.  建立一个C++工程。选动态链接库类型的。将这个头文件复制过去 。同时还有 两个头文件分别是jni.h和jni_md.h,这两个文件在jdk安装目录下include文件下和include/win32下,全部 复制到C++工程。然后就是实现了,将头文件中的方法声明原封不动的copy到源文件 中去实现就可以了。然后就可以生成动态 链接库了 。

参数的类型jstring,只是Java到C++的中间类型。其他的类型也都可以。我这里传个json串过去,在C++中解析成类就好了 。

json串的解析可以使用 rapidjson。 github大神封装的AIGCJson很好用,传送门。

4. 生成的链接库复制到Java工程的根目录下。调用就好了。 String res = TestJni.callFun(param);

 



这篇关于Java调用C++动态链接库——Jni的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程