1)首先要有一个HelloWorld.java。
这个是主文件,里面包括本地方法的java声明,一个main函数,还有一个静态代码段,用来导入所需要的动态连接库(在windows里是.dll)。
代码如下:
//HelloWorld.java
class HelloWorld {
public native void displayHelloWorld();//注意关键字native,这就说明这个方法是用本地方法实现的。
static {//静态代码段里面导入了hello.dll。
System.loadLibrary("hello");
}
public static void main(String[] args) {//调用本类的displayHelloWorld方法,(当然了方法实际上是用c语言实现的)
new HelloWorld().displayHelloWorld();
}
}
2)编译HelloWorld.java。
使用语句为:、
javac HelloWorld.java
3)使用javah命令生成一个.h文件。
4)写一个.cpp文件实现native到处方法,气宗要包含第二部产生的.h文件(该.h文件中又包含了JDK带的jni.h文件);
java生成的.h文件
#define _Included_com_kunlun_useC_EncryptUseC
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_kunlun_useC_EncryptUseC
* Method: helloWorld
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_kunlun_useC_EncryptUseC_helloWorld
(JNIEnv *, jclass);
}
#endif
#endif
#include "jni.h"
#include <stdio.h>
JNIEXPORT jstring JNICALL Java_com_kunlun_useC_EncryptUseC_helloWorld(JNIEnv *env, jclass)
{
const char *str = "test sucessful!";
return env->NewStringUTF(str);
}
5)在windows先装gcc,利用命令来生成动态链接库:g++ hello.cpp -shared -o 存放路径名\hello.dll -Wl,-kill -t -I"jdk安装路径\include" -I"jdk安装路径\include\win32"。