JNI
JNI 全称 Java 动态接口(Java Native Interface),专门于为其他语言提供自己的规范
-
作用是融合不同的编程语言为 Java 所用,初衷是融合 C/C++ 程序
步骤说明
-
Java 交予 JVM 编译得到二进制文件(.class),再编译生成 C++ 头文件(.h)
-
在相应.cpp 文件中引入
-
通过 DLL 项目生成 64 bit 动态链接库(.dll)
-
将动态链接库存放于 % JAVA_HOME% 路径,供 API 调用
具体操作
JavaToCpp
-
编写 Java 类,声明 sayHello () 方法
- 一个
Native Method
就是一个 Java 调用非 Java 代码的接口,就如 C++ 中可用extern
告知编译器调用一个 C 函数
- 一个
1 | public class Test { |
-
生成 JNI 头文件
1 | javah -jni -classpath ./ Test |
CppToJava
-
创建 DLL 项目,引入该头文件
-
实现 sayHello () 本地方法
1 |
|
-
指定 x64 平台,生成解决方案
Main
-
需要先将生成的动态链接库放至 % JAVA_HOME% 路径
-
调用
1 | public static void main(String[] args) { |
Q&A
Q:出现以上报错?
A:这是因为生成的 DLL 是 32 位的不支持 64 位的平台(jdk 环境),应在生成时指定为 64 位 DLL