JNI是Java Native Interface的 缩写,允许Java代码和其他语言写的代码进行交互。
主要操作步骤:
1·编写带有native声明的方法的java类
public class JNITest
{
//加载C/C++文件,加载到内存中
static
{
System.loadLibrary("HelloWorld");
}
//要调用java本地接口
public native void output();
public static void main(String[] args)
{
JNITest test = new JNITest();
test.output();
}
}
2·使用javac命令编译所编写的java类
javac -d . JNITest.java
3·使用javah ?jni java类名生成扩展名为h的头文件
javah JNITest
4·使用C/C++(或者其他编程想语言)实现本地方法
这个我是借助Visual Studio2012(安装就花了我一个晚上),创建一个win32的应用:
需要把第3步生成的JNITest.h文件放到当前工程中,且需要把编译需要的文件添加进来
上图中显示的是把jdk中两个文件夹添加到包含目录中,实际用到的是include/jni.h和include/win32/jni_md.h
#include "stdafx.h"
#include "JNITest.h"
#include "jni.h"
JNIEXPORT void JNICALL Java_JNITest_output
(JNIEnv *, jobject)
{
printf("记录一下,Helloworld");
}
5·将C/C++编写的文件生成动态连接库
