日期:2014-05-20  浏览次数:20615 次

JAVA怎么调用现有的DLL动态连结库中的方法
似乎是别人曾经提问过的
但我还不是特明白
某个产品提供给我们一个产品接口   就是一些dll文件   和对文件的介绍
eg:对yashengpro.dll说明如下
1. 打开串口
功能:打开指定的计算机串口
函数:
int   OpenSerial(int   nCom)

参数:
nCom-所要打开的串口

返回值:  
1-打开串口成功
0-打开串口失败
2. 关闭串口
功能:关闭打开的计算机串口
函数:
void   CloseSerial()
3. 机器时间修改
功能:修改机器的时间
函数:
int   SetTime(int   nMachine,char   cDateTime[15])

参数:
nMachine   -机器号
cDateTime-要设置的时间。
时间格式为YYYYMMDDHHMMSSD
如200408111612303,2004年8月11日16点12分30秒星期三

返回值:
0-时间设置成功
1-时间设置失败

现在我想用java编程调用这些个dll

望大家明示
谢谢


------解决方案--------------------
找使用配置说明,没提供JAR包吗?
应该有吧,将JAR包加入CLASSPATH. DLL放入工程下面,直接调用
没有JAR包的话,要自己搞?
------解决方案--------------------
使用Java Native Interface技术来和其它语言进行交互
搜索一下吧,这类的讲解非常多.

http://blog.csdn.net/feihoo88/archive/2007/02/13/1509355.aspx
------解决方案--------------------
mark

------解决方案--------------------
可以使用jcob试试,目前java调用COM组件的通用方法,不过该组件也不是很成熟,仍有不少bug。
------解决方案--------------------
我自己的做法是写一个可以供java 调用的dll,而这个dll再去调用我们真正需要的dll.
步骤如下:
1.定义好自己想要调用这个dll的java类,如叫:Callyashengpro.class.里面有调用这几个函数的native方法,如 public native int OpenSerial();而加载的本地方法则要改成可以供java使用的dll.如:
static {
System.loadLibrary( "javacall ");
}

2.用C再写个可以供java 调用的dll,名称要与调用本地方法类中加载的名称一样.如:javacall.dll内容就是实现根据javah成生刚才的头文件;实现的内容就是简单调用yashengpro.dll里的函数就可以了.
------解决方案--------------------
期待中。
------解决方案--------------------
dy0222(大鱼)说的对

不过要确定给你的dll是不是jni技术生成的

如果是的话那就把dll文件放在%java_home%/bin下

class UseDll
{
public native int OpenSerial();
static
{
System.loadLibrary( "dllname ");//没有扩展名
}
{

}
}

------解决方案--------------------
把jar包放在classpath里

------解决方案--------------------
JNI
------解决方案--------------------
用JNI啦