最简单的JNI
JNI就是“Java本地化”,适用于和C/C++混合编程,复杂的理论不必多说,下面一个例子说明了怎样JNI。以下工作都在一个开发目录下,假设环境变量都已经设好。
1. 编写类似这样的java文件,保存为 HelloWorld.java 的文件,并javac HelloWorld 产生class文件
class HelloWorld
{
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args)
{
new HelloWorld().displayHelloWorld();
}
}
2.用命令:javah HelloWorld 产生一个HelloWorld.h的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
3.实现 HelloWorld.c 源文件
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("HelloWorld,/n");
return ;
}
4.编译产生 Hello.dll ,用微软的cl,假设你已经装好了vc,这里用的是vc6,将vc/bin/VCVARS32.BAT拷到你的同一个目录下,cl之前要运行它
cl -I%java_home%/include -I%java_home%/include/win32 -LD HelloWorld.c -Fehello.dll
(注:假设java_home环境变量已经设好;-LD后面有一个空格)
5.
Java HelloWorld 即可看到结果