按照网上搜索帖子的步骤:
1.编写Java类文件testdll.java(E:/zhs),声明两个native方法,并且有主函数:
public class testdll { static{ System.loadLibrary("goodluck"); //不写扩展名,名字要与dll的文件名一致 } public native int getValue();//声明两个native方法之一 public native void setValue(int i);//之二 public static void main(String[] args) {//有主函数 testdll test=new testdll(); test.setValue(10); System.out.println(test.getValue()); } }
2.生成.h头文件。在命令行编译testdll.java.然后用javah命令生成testdll.h.
注意:由于在命令行,要正确设置classpath,%JAVA_HOME%/lib/tools.jar 和dt.jar,不能只到lib,否则报错。
到E:/zhs,键入
javac testdll.java
javah testdll
生成testdll.h
OK!
3.创建vc6的dll工程testdll。把头文件testdll.h引入工程,建立新的cpp源程序,代码如下:
注意:
把testdll.h考到工程文件夹,然后include。
下面的两个头文件jni.h和jni_md.h来自jdk的安装目录下include文件夹(jni.h)和其下的win32文件夹(jni_md.h)。但是把他们考到工程文件夹下再include报错,必须要拷贝到vc6安装目录下:C:/Program Files/Microsoft Visual Studio/VC98/Include
#include "testdll.h" #include "jni.h" #include "jni_md.h" int i=0; JNIEXPORT jint JNICALL Java_testdll_getValue (JNIEnv *, jobject){ return i; } JNIEXPORT void JNICALL Java_testdll_setValue (JNIEnv *, jobject, jint j){ i=j; }
编译,构建,在vc6/testdll/Debug下会生成testdll.dll的文件。
注意:不能点击红叹号(执行),也不必点击。
4.拷贝testdll.dll到E:/zhs下,改名为第一步(1)中所引用的【System.loadLibrary("goodluck"); 】中的goodluck.dll。执行
java testdll
即调用了这个dll。输出的是10.
OK!
时间匆忙,记以备忘。
本文介绍了一个具体的Java调用DLL文件的例子。首先通过编写Java类声明native方法并加载DLL库,接着使用javah生成.h头文件,随后在VC6中创建DLL工程并将Java头文件与实现代码整合,最后完成DLL的编译并由Java程序调用。
6065

被折叠的 条评论
为什么被折叠?



