参考
http://java.sun.com/docs/books/jni/html/start.html#769
创建一个文件夹
用于存放源码和输出文件
创建编译Java
1、用记事本创建java源码如下(一开始不要用eclipse)
class HelloWorld { private native void print(); public static void main(String[] args) { new HelloWorld().print(); } static { System.loadLibrary("HelloWorld"); } }
2、保存为HelloWorld.java
3、编译之
产生class文件
生成头文件
执行javah命令
生成了头文件
制作DLL
1、用VS创建一个Win32的DLL工程
2、把前一步生成的HelloWorld.h加入工程(最好是拷贝到DLL所在工程,否则还要加附加头文件路径)
3、设定附加头文件路径
4、实现Native方法
#include <jni.h> #include <stdio.h> #include "HelloWorld.h" JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj) { printf("Hello World!\n"); return; }
5、编译
运行
1、把DLL拷贝到system32下(需要把JNINative.dll改名为HelloWorld.dll,才能被该Java调用。这点是例子不严谨)
2、在class所在目录下,用java HelloWorld运行
遗留问题
1、如何允许DLL在任意目录下
2、如果Java类在包中,如何编译运行通过(实际操作中,在eclipse中没问题,在命令行有错)