当前位置: 技术问答>java相关
请问在java里怎么调用dll?
来源: 互联网 发布时间:2015-09-16
本文导语: 小弟最近需要在java里调用dll,但部知道应该怎么办? 请各位大虾帮忙! | 可以使用jni技术来实现,JNI是Java native interface的缩写,是java调用本地语言应用的方法, 简述作法如下: 1 a.如果一...
小弟最近需要在java里调用dll,但部知道应该怎么办?
请各位大虾帮忙!
请各位大虾帮忙!
|
可以使用jni技术来实现,JNI是Java native interface的缩写,是java调用本地语言应用的方法,
简述作法如下:
1
a.如果一个类需要调用本地方法(比如c,cpp代码),则先在这个类的类声明中,使用如下语句:static{System.loadLibrary("MyDll");}
b.然后将要调用的本地方法的名称在这个类中声明,声明形式如下:public native void jnimethod();
c.接下来就可以在要用到这个方法的地方,如同一般的java方法一样调用。
以上只是在java代码中要注意的地方
2
d.在完成了如上的步骤后,使用javah命令来生成一个c程序要使用的头文件,格式如下:C:> javah -jni MyJniTest
这样就生成了一个同名,后缀为.h的头文件,打开这个头文件,在其中发现两行形如:
JNIEXPORT void JNICALL Java_MyJniTest_jnimethod
(JNIEnv *, jobject);
的代码,其中Java_MyJniTest_jnimethod就是在c语言中要生成的方法名称,第二行的括号中就是该方法的两个默认参数
至此,头文件也生成了,
3
e.现在开始生成要被调用的c程序,要编译成.dll文件
要生成形如:
#include
#include "MyJniTest.h"
#include
JNIEXPORT void JNICALL
Java_MyJniTest_jnimethod(JNIEnv *env, jobject obj)
{
......
return;
}
格式的c/cpp代码,而后生成dll
4
将生成好的dll文件,放置于系统类路径下,即可实现JNI本地方法调用了。
简述作法如下:
1
a.如果一个类需要调用本地方法(比如c,cpp代码),则先在这个类的类声明中,使用如下语句:static{System.loadLibrary("MyDll");}
b.然后将要调用的本地方法的名称在这个类中声明,声明形式如下:public native void jnimethod();
c.接下来就可以在要用到这个方法的地方,如同一般的java方法一样调用。
以上只是在java代码中要注意的地方
2
d.在完成了如上的步骤后,使用javah命令来生成一个c程序要使用的头文件,格式如下:C:> javah -jni MyJniTest
这样就生成了一个同名,后缀为.h的头文件,打开这个头文件,在其中发现两行形如:
JNIEXPORT void JNICALL Java_MyJniTest_jnimethod
(JNIEnv *, jobject);
的代码,其中Java_MyJniTest_jnimethod就是在c语言中要生成的方法名称,第二行的括号中就是该方法的两个默认参数
至此,头文件也生成了,
3
e.现在开始生成要被调用的c程序,要编译成.dll文件
要生成形如:
#include
#include "MyJniTest.h"
#include
JNIEXPORT void JNICALL
Java_MyJniTest_jnimethod(JNIEnv *env, jobject obj)
{
......
return;
}
格式的c/cpp代码,而后生成dll
4
将生成好的dll文件,放置于系统类路径下,即可实现JNI本地方法调用了。
|
我使用的是ibm的xml parser,用起来非常简单的,它会把xml解析为一个dom树,然后我的程序就可以直接操作dom对象,我虽然没有用过其他的解析器,但是我想估计差不多,解析的步骤,你不用关注