JNI调用
环境
操作系统: Win 10
准备
- 安装visual studio 2019
开始
- 新建Java项目,新建包cn.foolishbird.JNIDemo, 新建类HelloWorld
package cn.foolishbird.JNIDemo;
import java.nio.file.FileSystems;
public class HelloWorld {
public native void displayHelloWorld();
static {
try {
System.load(
FileSystems.getDefault()
.getPath("build/hello.dll")
.normalize()
.toAbsolutePath()
.toString());
} catch (UnsatisfiedLinkError e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
new HelloWorld().displayHelloWorld();
}
}
-
cd到项目src目录,执行命令: javah -jni cn.foolishbird.JNIDemo.Sample
-
查看src目录下是否有对应.h文件
-
用visual studio 新建dll项目
-
将生成的.h文件复制到头文件目录下
-
源文件添加实现
-
实现文件
/* HelloWorldImp.c */ #include "pch.h" #include <jni.h> #include "cn_foolishbird_JNIDemo_HelloWorld.h" #include <stdio.h> JNIEXPORT void JNICALL Java_cn_foolishbird_JNIDemo_HelloWorld_displayHelloWorld (JNIEnv *, jobject) { printf("Hello world!\n"); return; }
-
打包成.dll, 这里注意,因为我jdk是64位打包dll也必须是64位
-
注意jni.h 需要添加到环境里面,visual studio 右键项目->属性
-
选择生成->生成解决方案 将build复制到项目下