关于java调用dll的问题
目前有一个类,用来调用一个dll动态链接库,但是这个类没有package,而如果把这个类的顶端加上package则会在调用dll时报错,而没有package的时候别的java程序又不能调用这个类,没法import,请问有没有什么变通的方法 问题点数:100、回复次数:12Top
1 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2004-12-01 17:39:35 得分 0
加进package,然后调用dll时用绝对路径
Top
2 楼redex(cc)回复于 2004-12-01 17:41:52 得分 0
adaptorTop
3 楼justinzhai(独孤野猪)回复于 2004-12-01 17:52:36 得分 0
jFresH_MaN()(AbsolutelyFresh)(java欣人)
加进package,然后调用dll时用绝对路径
不行啊,怎么写绝对路径呢?
"c:/windows/system32/xxx.dll"???这样反而找不到dllTop
4 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2004-12-01 17:57:32 得分 0
那我想问一下你的dll是不是用jni做的?
如果不是,怎么样也调用不了Top
5 楼justinzhai(独孤野猪)回复于 2004-12-01 18:09:45 得分 0
不是我做的,我没有.h文件,只有一个java类,而这个类已经可以调用dll了,但是这个类没有packageTop
6 楼justinzhai(独孤野猪)回复于 2004-12-01 18:11:55 得分 0
最关键的问题就在于我没有.h文件,而这个dll是别人已经用jni做的,所以我没有.h文件的情况下没法用jni重做一个dllTop
7 楼jFresH_MaN(十一月的萧邦-夜曲)回复于 2004-12-01 18:20:41 得分 0
c:\\windows\\system32\\xxx.dll这样试试吧
是报找不到这个资源的异常吗?
对了,你的classpath里面有没有.啊?
如果有的话,在你的工作目录下面用相对路径就行了啊Top
8 楼justinzhai(独孤野猪)回复于 2004-12-01 18:28:24 得分 0
你说的都不是关键,怎么调用一个dll和重新用jni制作一个dll我都会,而现在有一个java类已经能调用dll了,也就是说我的library已经没有问题了,可是这个java类没有package,所以别的java类没法调用这个java;然后我没有.h文件,所以我没法重新用jni做一个dll;Top
9 楼taolei(实在无聊)回复于 2004-12-01 19:55:17 得分 0
没有package,别的类就调用不了?我还没听说过。
你那个class里一定是有native方法,它和那个dll是对应的,不能修改package.
如果一定要修改package的话,你要重写那个dll。
或者你对windows编程还可以的话,在写个dll来调用原来的dll.
在或者找个工具,把那个dll里面的export函数名字改成带package的。
Top
10 楼justinzhai(独孤野猪)回复于 2004-12-12 22:56:22 得分 0
已经解决了,重写dll是不可能了,因为没有.h文件,根本不知道这个dll里面有些什么方法;也不知道该怎么调用;
最后用的是反射技术;
package com;
import java.lang.reflect.Method;
public class UseTop {
public static void main(String[] args) throws Exception {
Class cls = Class.forName("Top");
Method method = cls.getMethod("log", null);
Object o = cls.newInstance();
method.invoke(o, null);
}
}
Top
11 楼justinzhai(独孤野猪)回复于 2005-01-26 09:16:18 得分 0
可以调用,把.h重新编译生成Top
12 楼hzzhb(远洋)回复于 2005-01-26 09:22:41 得分 100
你的路径不对吧,用绝对路径试试Top




