jnative 调用dll

来源:互联网 发布:淘宝图片空间删不掉 编辑:程序博客网 时间:2024/06/05 06:58

本来是想用java来做个扒网站的对接,这个网站登录要验证码,用我们的验证码识别库就得调dll,

一百度java是可以调dll,我选择用jnative包来实现,兴冲冲的学着把环境搭好,把dll准备好,代码

写好

JNative LoadCdsFromFile = new JNative("AntiVC.dll", "LoadCdsFromFile");//加载

LoadCdsFromFile.setParameter(0, "ZSH.cds");//设置调用函数的参数
LoadCdsFromFile.setParameter(1, "aaaaaa");
LoadCdsFromFile.invoke();//执行

LoadCdsFromFile.getRetVal();//得到结果

 

一测,console里啥都没有一片白,我就懵了,调试也没有报错,不过直接跳出函数不往下执行了。

百度,还是百度,有位好心人的博文给了点提示:

System.setProperty("jnative.debug", "true");  //添加这行 可以打出jnative内部调试信息

ok,只要不是一片白就没那么慌了

如果报错含有System.LoadLibrary(),这说没有找到  JNativeCpp.dll 路径,可以用以下方式强制设置

System.setProperty("jnative.loadNative","C:\\Windows\\SysWOW64\\JNativeCpp.dll");

以为胜利的凯歌就要吹响了,然而得到如下回应:

C:\Windows\SysWOW64\JNativeCpp.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform

搞半天32位的dll 不能在64bit平台上跑

又是百度。这下没有大神可以救我了,网上都是一片呼救。。。

总结起来解决办法只有两个:

1、将dll都用64bit编译。  而64 bit  的 JNativeCpp.dll 没有找到

2、将jdk换成32bit的。对于我来说只有这种方式可行

 

额 外挂还是delphi好

原创粉丝点击