如何用java调用windows的dll,例如msimg 我本来想用jni调用dll,但是要用到c,感觉太麻烦了,不知各位有没有调用过dll,谈谈你们是怎样做的,让小弟我借鉴一下. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 System.loadLibrary("TrayIcon12");//TrayIcon12是dll文件此语句是本人实现在windows的任务栏加入图标时的程序中选出 我做过,必须用jniSystem.loadLibrary("dllname");等等 1.首先的有.dll的.h文件既API说明2.写java代码你的方法应是调用本地方法的如: ...//包装本地方法的java方法void foo(){ nativeFoo();}//声明本地方法的调用方法native void nativeFoo(); ...3.编译上面的.java文件会生成.class文件4.用javah yourclasssname生成jni的头文件*.h5.建立一个c/c++的工程(DLL)实现你的头文件的方法6.编译后生成yourcppname.dll7.把yourcppname.dll考到classpath路径下在2.步的你的.java类中加入static{ System.out.loadLibrary("yourcppname");}后重新编译8.执行重新编译后的.class 一、JAVA中所需要做的工作 在JAVA程序中,首先需要在类中声明所调用的库名称,如下: static { System.loadLibrary(“goodluck”); } 在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。 还需对将要调用的方法做本地声明,关键字为native。且只需要声明,而不需要具体实现。如下: public native static void set(int i); public native static int get(); 然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。 ....详细操作见http://www.pconline.com.cn/pcedu/empolder/gj/java/0506/642328.html 其实我也会用jni调用c写的函数,关键是还要用c去调用dll的api,那不是还要去熟悉vc嘛,真是麻烦呀!! 大家有没有用java调用过windows的msimg.dll,用这个动态库实现颜色渐层. 那在vc中怎样调用dll中的api函数了 这段程序哪里错了? 关与抽象类的问题 SWT中怎样设定column的宽度? 我想用泛型写个这样的类,请大家帮忙看看 请教:请好心人教我 请教数组访问速度的问题 定义一个方法是否为静态方法主要靠怎么判断? 按钮事件触发的问题? 冒泡排序与选择排序。。。 Java-多线程同步疑问 很简单的问题,请大家帮忙 散分100求教2个题目 高手指教 谢谢
System.loadLibrary("dllname");
等等
2.写java代码你的方法应是调用本地方法的如:
...
//包装本地方法的java方法
void foo()
{
nativeFoo();
}
//声明本地方法的调用方法
native void nativeFoo();
...
3.编译上面的.java文件
会生成.class文件
4.用javah yourclasssname生成jni的头文件*.h
5.建立一个c/c++的工程(DLL)实现你的头文件的方法
6.编译后生成yourcppname.dll
7.把yourcppname.dll考到classpath路径下在2.步的你的.java类中加入
static
{
System.out.loadLibrary("yourcppname");
}后重新编译
8.执行重新编译后的.class
在JAVA程序中,首先需要在类中声明所调用的库名称,如下:
static {
System.loadLibrary(“goodluck”);
} 在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。 还需对将要调用的方法做本地声明,关键字为native。且只需要声明,而不需要具体实现。如下:
public native static void set(int i);
public native static int get(); 然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。 .
.
.
.详细操作见
http://www.pconline.com.cn/pcedu/empolder/gj/java/0506/642328.html