欢迎来到天天文库
浏览记录
ID:55396208
大小:27.00 KB
页数:2页
时间:2020-05-12
《我知道的有种方法,一种是直接用JNI,另一种是则是用.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、我知道的有两种方法,一种是直接用JNI,另一种是则是用Jacob(实质上也用的是JNI)先讲讲第一种方法1.编写java程序TestDll,注意,这个类有两个作用,一个是用来做头文件,另外一个作用就是通过它来调用dllpublicclassTestDll{ static { System.loadLibrary("DLLSample");//载入dll } publicnativestaticintDoubleValue(inti);//函数声明 }2.编译:javacTestDll3.生成头文件:javahTest
2、Dll生成TestDll.h文件,这里面只对函数DoubleValue作了声明/*DONOTEDITTHISFILE-itismachinegenerated*/#include/*HeaderforclassTestDll*/#ifndef_Included_TestDll#define_Included_TestDll#ifdef__cplusplusextern"C"{#endif/* *Class: TestDll *Method: DoubleValue *Signature:(I)I
3、 */JNIEXPORTjintJNICALLJava_TestDll_DoubleValue (JNIEnv*,jclass,jint);#ifdef__cplusplus}#endif#endif4.用vc制作DLL修改DLLSample工程,程序中添加函数DoubleValue的实现,函数名必须用jni规定格式,可以照到.h文件里的声明来写:#include"jni_md.h"#include"TestDll.h"JNIEXPORTjintJNICALLJava_TestDll_DoubleValue(JNIEn
4、v*,jclass,jintp){intj=p*2;returnj;}JNIEXPORT,JNICALL,JNIEnv*,jclass请都不要动,jint对应是java里的int别忘了把TestDll.h,jni.h(这个文件在jdk/include下),jni_md.h(这个文件在jdk/include/win32下)复制到VC工程目录中,然后编译生成dll5.把生成的DLLSample.dll复制到jdk/bin下(确保PATH指向了这个目录)6.应用我看到他们举的例子都是把调用写在了main里,在这里我把应用取出
5、来放在一个servlet类中的测试的,同样可以得到正确结果,这里体现国TestDll的第二个作用,它是调用dll的一个纽带 ...... TestDlltd=newTestDll(); System.out.println("result="+td.DoubleValue(25)); .....注意: 如果更改了TestDll的内容或重使命名了这个文件,必须重新用它生成头文件,在dll里也要做相应修改,因为必须要和java里面的声明一致才行
此文档下载收益归作者所有