在网上看到各种帖子谈论java的native方法,这是java用来弥补其运行速度慢而利用C的措施,可以说是java与C/C++的接口,但是网上这类帖子太多而且讲述的方法都很复杂,今天我想总结一下。
步骤:
1.写一个java类,例如下面的HelloWorld.java
public class HelloWorld { private native void print(); static { System.loadLibrary("Hello"); } public static void main(String[] args) { new HelloWorld().print(); } }
注意(1)上面的native关键字,在这是说明print方法不是用java实现的,static{}类似于初始化工作。
(2)System.loadLibrary("Hello");是程序要导入Hello.dll这个文件,这个文件是用C/C++写的,而且必须包含print()方法的实现。 (3)最好别用Eclipse写,因为我一开始这样做后死活都不能通过javah。
2.写完java文件后,打开命令行窗口,在java文件目录下输入javac HelloWorld.java进行编译生成HelloWorld.class文件,这一步就不多说了。
3.在class文件目录下再次用dos命令javah -jni HelloWorld生成HelloWorld.h文件
4.到重点了,打开vc6.0或者VS新建一个C++DLL工程,例如Hello,再在工程里新建一个Hello.c文件,写下以下代码:
#include<jni.h> #include<stdio.h> #include"HelloWorld.h" JNIEXPORT void JNICALL Java_HelloWorld_print (JNIEnv *env, jobject obj) { printf("Hello World!\n"); return; }
注意:
(1)include jni.h文件,这个头文件在你jdk目录下的include目录下,但光这个头文件还不够,因为jni.h里面还include其他头文件,包括