文章目录
  1. 1. 后记
  2. 2. 参考资料

开发环境:Java 11; IntelliJ IDEA 2019.1.1; Visual Studio 2019

第一步:编写Java类

1
2
3
4
5
6
7
8
9
10
public class LearnJNI {

public native void helloJNI();

public static void main(String[] args) {
System.loadLibrary("LearnJNI");
new LearnJNI().helloJNI();
}

}

第二步:使用Java类生成C头文件

在Java的编译输出目录下执行如下指令:

1
javac -h . com.github.mouse0w0.learnjni.LearnJNI

在Java 10之前,生成头文件主要通过javah:

1
javah -classpath . -jni com.github.mouse0w0.learnjni.LearnJNI

结果如下图所示:

Javah指令执行结果

第三步:使用Visual Studio创建C++项目

在Visual Studio中选择C++空项目:

创建新项目

配置好项目名称,任取即可:

配置新项目

得到这样一个文件结构的项目:

文件层次结构

创建头文件与CPP文件,并将我们使用javah生成的头文件的内容复制到创建的头文件中:

头文件

我们可以看到有很多错误。不过接下来将配置我们的C++项目。

第四步:配置C++项目

右键解决方案,打开属性:

解决方案属性

选中配置属性>配置,设置配置为Release,平台为x64

设置配置属性

右键LearnJNI项目,打开属性:

项目属性

选中配置属性>常规,设置项目默认值>配置类型动态库(.dll)

设置配置类型

选中配置属性>VC++ 目录,点击常规>包含目录<编辑...>

编辑包含目录

点击红框内按钮,添加JDK路径下的include文件夹和include\win32文件夹:

包含目录

第五步:实现C++代码

在CPP文件中编写如下代码,输出Hello World

CPP代码

第六步:编译C++代码为DLL

点击Visual Studio上方的菜单栏中的生成>生成 LearnJNI生成项目:

生成DLL

最终得到如下输出,输出DLL的路径在下图红框内:

生成DLL输出

第七步:配置Java运行

将输出的DLL置于Java项目下的适宜文件夹:

Native文件夹

在IDEA的启动配置中增加JVM参数:

1
-Djava.library.path=D:\Workspace\JavaProjects\LearnJNI\native

JVM参数

运行启动配置,得到Hello World的输出:

Hello World

后记

本篇教程中所讲解的JNI和C/C++项目的开发和使用方法还很幼稚,读者可就情况进行进一步的学习和改进。如使用头文件自动生成工具,使用CMake配置跨平台的C/C++项目编译。

参考资料

JNI 入门教程 | 菜鸟教程

Visual Studio中开发Jni dll库

文章目录
  1. 1. 后记
  2. 2. 参考资料