ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-09-06 17:31:08  阅读:185  来源: 互联网

标签:调用 头文件 C++ 生成 动态链接库 Java 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);

 

标签:调用,头文件,C++,生成,动态链接库,Java,Jni
来源: https://www.cnblogs.com/lostO/p/16662576.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有