Java调用dll Java调用COM组件

来源:互联网 发布:minix源码下载 编辑:程序博客网 时间:2024/06/05 05:05

1、JNative

JNative调用dll很方便,只是需要dll有导出函数,否则调不到。就是说要调用的方法必须是导出函数。如果不知道你的dll有没有这个导出函数,可下载这个软件查看——DLL函数查看器。

下载JNative开源项目(百度之),解压开,拿到三个文件,分别是:JNativeCpp.dlllibJNativeCpp.soJNative.jar  
——JNativeCpp.dll Windows下用的,拷贝到c:/windows / system32目录下

如果不行,可能是64b系统,在c:/windows /SysWOW64文件夹下面再放一个

——libJNativeCpp.so Linux下的,拷贝到系统目录下;

——JNative.jar 这是一个扩展包,导入工程LIB中或将其拷贝到jdk\jre\lib\ext 下,系统会自动加载。

例子:使用JNative组件调用一个测试应用服务器状态的TestABC.dll文件,Dll文件中包含一个TestMain(String ip,int port)方法,返回一个整形的结果(1或0)

public static void main(String[] args) {System.loadLibrary("TestABC");JNative n = null;try {n = new JNative("TestABC", "TestMain");// n.setRetVal(Type.STRING);int i = 0;n.setParameter(i++, Type.STRING, "192.168.1.108");n.setParameter(i++, Type.INT, "" + 1000);n.invoke();return Integer.parseInt(n.getRetVal());} catch (NativeException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}


2、Jacob

Jacob调用COM组件,如果dll文件可以注册为COM组件,可以使用Jacob方式调用,很好用,而且不需要导出函数。

Jacob下载:点击打开链接

例子:

第一步,注册组件,注册方式为 开始——运行——输入命令cmd——输入命令regsvr32——空格——拖入要注册的dll文件——回车

显示成功,则注册完成。

第二步,去注册表中把你注册com组件找到,一般命名方式是“dll名字+ . +后缀”,可以根据dll的名字找,这是获取此com组件的关键,同时进一步判断你注册成功了。

第三步,写代码调用

ActiveXComponent axc = new ActiveXComponent("testcom.Test");//获取对象Dispatch dis = axc.getObject();String str ="";//初始化Variant v1 = new Variant(str,true);//输出参数定义,必须这样,否则得不到输出参数的值Variant v2=new Variant();//返回值定义v2 = Dispatch.call(dis, "getFace", "100",200,v1);System.out.println("输出参数值:"+v1);System.out.println("返回值:"+v2);
代码解释:调用方法时,注意此处有Java中没有的概念,叫做输出参数,用于返回值不够时的传值。输出参数的定义如上,一般参数定义与Java相同,直接传输即可。

忘了说最初,需要把jacob解压开,获取里面的dll文件,放到c:/windows / system32目录,建议64b的系统再放一份到c:/windows /SysWOW64文件夹下。里面的jacob.jar就不用多说了吧,放到项目里导入就行啦。


原创粉丝点击