参考来源:
http://blog.sina.com.cn/s/blog_b37338430101f3zq.html
http://www.cnblogs.com/xiaocainiao2hao/p/5619862.html
https://blog.csdn.net/aslgm_1/article/details/71514617
【
huachao1001
的专栏:
http://blog.csdn.net/huachao1001/article/details/53906237
】
本文环境:IntelliJ idea2018.2+Visual Studio 2017
项目:JavaWEB+Win32控制台
声明:本人是个新手小白。因为项目是C++算法写的,但是要用网页调用,所以先学习JavaWEB调用C++程序作为尝试。参考了网上的一些教程,结合自己的理解与出现的错误,写成总结日后参考。不足之处请提出。
首先明确本文的步骤:
- 在Java中新建一个类。
- 生成JNI头文件。(此处有两种方法:2.1手动输入javah命令生成头文件、2.2 一键生成头文件)
- 在VS2017下引入头文件。
- 将dll添加进JavaWEB工程,成功运行。
1.在Java中新建类
利用IntelliJ idea新建一个Java工程,在src中新建一个Java类,名称命名“testNative”。之后弹出testNative.java。
在testNative.java中写如下程序:
函数System.loadLibrary()是加载dll(windows)或so(Linux)库,只需名称即可,无需加入文件名后缀(.dll或.so)。
native关键字将函数sayHello()声明为本地函数,由C/C++实现。具体的实现就在hello.dll(Windows平台)或hello.so(Linux平台)中。
2.生成JNI头文件
-
2.1 手动输入javah命令生成头文件
-
2.2 一键生成头文件
2.1 手动输入javah命令生成头文件
JNI生成头文件是通过JDK中提供的javah来完成,javah在
{JDKHome}/bin
目录中。用法如下:
javah -jni -classpath (搜寻类目录) -d (输出目录) (类名)
例如,将
E:\Porject\out\com\huachao\java
目录中的
HelloJNI.class
生成头文件,并放入到
E:\Project\jni
中:
javah -jni -classpath E:\Porject\out\com\huachao\java -d E:\Project\jni