java开发调用C语言的DLL

 

通过Java调用OCX控件或者DLL有以下几种方法,使用JNI、JACOB、Jawin等技术完成接口调用;

1.JNI

最直接的方式,也是最麻烦的方式,需要自己完成所有的工作,不推荐。

2.Jawin

尝试了一下,效果不错,但相对来说,其编程风格更贴近Windows,离Java有点远

3.Jacob

使用Jacob非常方便,Java编程风格,需要了解的知识比较少官方的解释是Java COM Bridge,即java
com组件间的桥梁(进一步了解com/dcom: http://docs.huihoo.com/com/
com一般表现为dllexe等二进制文件

下载地址:  http://sourceforge.net/projects/jacob-project/     JACOB。e

Jacob的使用方法(64位的jacob组件对应 64为的OCX控件或者DLL文件

1、将jacob.jar导入到开发项目(开发项目为需要引用的dll接口的项目)中,导入方法如下https://blog.csdn.net/zxz9900/article/details/99598807

2、将jacob-1.xx-x64.dll放到 C:\Windows\System32文件夹下(注意:该dll必须与jacob.jar版本一致);

3、注册DLL文件,regsvr32 D:\Code\EncryptionLibrary64.dll

      如果注册失败,提示没有入口的错误,请进行如下操作:

开始→所有程序→附件→右键点击命令提示符(CMD)→以管理员身份运行。

在DOS窗口中输入 regsvr32 msi.dll,提示成功,然后再执行 regsvr32 xx.dll

键盘操作win+r弹出运行框,输入  regedit  查看注册表;

注意:如果部分电脑不能注册,或者注册失败,可手动进行如下操作,键盘操作win+r弹出运行框,输入  regedit  查看注册表,选中“计算机”根节点,选中“文件”菜单中的【导入】,导入dll的注册文件(共两个注册文件,ProgId.regCLSID.reg),,导入完成后请查询“EncryptionLibrary64.EncryptionLibraryCom”,并修改注册文件中“InprocServer32”与“1.0.0.0”中“CodeBase”参数中“EncryptionLibrary64.dll”的相关路径(修改为dll文件在本地的路径);

 

1.初始化 

ComThread.InitMTA(true);

ActiveXComponent com = new ActiveXComponent("组件的ProgID") ;

Dispatch disp = com.getObject();

2.调用控件里面的方面

2.1调用无参的方法,并返回一个short值

Dispatch.call(disp, "Init").getShort();

2.2调用有一个参数的方法,并返回一个boolean值

Dispatch.call(disp,"Method",new Variant(args)).getBoolean();

调用多个参数依次类推,注意在传递参数前,将Java中的参数转换成Variant。