Bootstrap

IntelliJ idea 2018 平台下JNI编程调用C++算法(一)

参考来源:

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++程序作为尝试。参考了网上的一些教程,结合自己的理解与出现的错误,写成总结日后参考。不足之处请提出。

首先明确本文的步骤:

  1. 在Java中新建一个类。
  2. 生成JNI头文件。(此处有两种方法:2.1手动输入javah命令生成头文件、2.2 一键生成头文件)
  3. 在VS2017下引入头文件。
  4. 将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目录中。用法如下:

;