第一步。新建一个JAVA工程JniTest。再在包jni下新建一个HelloWorld类
package jni;
public class HelloWorld {
static{
System.loadLibrary("HelloWorld");
}
public native void dispHelloWorld();
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//System.getProperty("java.library.path");
new HelloWorld().dispHelloWorld();
}
}
第二步。利用javah命令产生相应的头文件
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class jni_HelloWorld */
#ifndef _Included_jni_HelloWorld
#define _Included_jni_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jni_HelloWorld
* Method: sayHi
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jni_HelloWorld_sayHi
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
第三步。在对应的目录下新建jni_HelloWorldImp.cpp文件实现头文件jni_HelloWorld.h的函数。
#include <jni.h>
#include "jni_HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_jni_HelloWorld_sayHi
(JNIEnv *env, jobject obj)
{
printf("Hi,World!");
return;
}
第四步。利用cl命令(本无cl命令。cl是vs编译器。可以配置环境变量。使得命令能运行。)
在控制台下>cl -LD jni_HelloWorldImp.cpp -FeHelloWorld.dll,
以上命令的参数中,-LD表示产生dll,-Fe后面表示产生dll的名字,具体的参数可以自己用cl -help命令查看,
如果成功编译,会产生HelloWorld.dll, HelloWorld.lib, HelloWorld.exp,
以及jni_HelloWorldImp.obj四个文件。
这儿有一个小技巧。选择VS下面的控制台工具,比较不容易出错。因为可能有些系统库路径不支持。在VS下面的控制台可以避免这一尴尬。当然你也可以用.bat文件指明路径,但如果路径较多,就比较麻烦。
OK,成功生成了。
最后一步。设置下本地JNI的路径
然后,运行测试。。