急求......关于java access bridge 无法调用的问题

messiasss 2015-05-31 01:20:41
1。该dll到底是否标准dll?该如何调用
2。如果引用,则“无法加入该文件”
3。如果RegSvr32注册,则“无法找到输入点”
4。如果按照标准dll来调用,则“无效的外部过程”

该dll的资料非常少,先把我看过的认为有用的资料链接给出来:
Java Access bridge下载页:http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136191.html
java access bridge的手册:http://docs.oracle.com/javase/accessbridge/2.0.2/index.html
关于c#调用java access bridge:http://www.docin.com/p-1119427640.html
Java Access bridge简单入门(一):http://blog.csdn.net/lishijun722/article/details/6728353
以上就是我能找到的所有资料了,资料非常之少。

无法调用,我也查了很多资料。。。资料说该dll是c++编写,vb调用c++编写的dll时,可能的问题是,在DLL的.def文件中必须加上入口函数,在函数定义前必须加上extern "c",_stdcall关键字,但我猜想该dll是大公司出品,不会犯这种低级错误吧。随后通过PE-Explorer查看dll源码的情况,也找不到相关的信息。

现在真正黔驴技穷了,望复!
...全文
688 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mocklan 2016-02-14
  • 打赏
  • 举报
回复
别忘了下载的jab需要解除禁用
mocklan 2016-02-10
  • 打赏
  • 举报
回复
给你个例子: https://github.com/jdog3/JavaAccessBridge.Net-Sample/tree/master/JabTestAppVB/My%20Project
Tiger_Zhao 2015-06-08
  • 打赏
  • 举报
回复
A)改用VB.Net调用。
B)先用C做个封装dll,接口换成StdCall,VB6调用封装的dll。
舉杯邀明月 2015-06-07
  • 打赏
  • 举报
回复
赵老虎在9楼已经说得很明显的了。
dll文件是已经编译好的,那它的参数如何传递、堆栈如何平衡,
就已经由机器码固定下来了。
文件头中记录的调用方式,只是为了便于使用者能够知道如何正确使用,
并不会因你用什么工具软件去更改了它的标识,就会引起它产生实质上的变化!
举个简单的列子,一个jpg格式的文件,你把它的扩展名改成bmp,
虽然在“我的电脑”中看起来它是bmp文件了(一般图标会跟jpg的不同)、并且双击它也能够正常打开,
但是,它仍然是jpg格式的图片文件!
之所以还能正确打开,仅仅是因图像处理模块从文件头识别出它本身的文件格式,
并按正确的模式加载图像而已。

同样的,你把一个txt文件的扩展名改成exe,
在“我的电脑”中它给你显示成了“可执行程序”,
但是它的实质还是文本文件,你双击它也不能被正确加载执行!

奉劝楼主不要去动那些歪脑筋!你改它的标识,没有任何意义!
你的这个,解决方案应该是:
① 考虑更换一种支持Cdecl的语言来编写程序。
② 用一种支持Cdecl调用、支持编译StdCall的DLL的语言做“二传手”,
把你所有需要用到的接口“包装一下”,编译一个StdCall的DLL来让VB6调用。
③ 搜索一下“VB6调用Cdecl函数”相关的示例,按相应的要求编写、调整,
实现VB6调用Cdecl的API(这个CSDN中可能有相关资源下载)。
messiasss 2015-06-07
  • 打赏
  • 举报
回复
真没人仔细说说嘛?这里应该高手云集的呀?
messiasss 2015-06-02
  • 打赏
  • 举报
回复
引用 9 楼 Tiger_Zhao 的回复:
这个改不了的。 接口只是提示调用者参数该按何种方式入栈/出栈。 函数内部对参数栈的使用是固定的。
PE-Explorer提示有修改调用模式的选项,当然我不知道是否有效。 无论如何,非常感谢你的回答。
Tiger_Zhao 2015-06-02
  • 打赏
  • 举报
回复
这个改不了的。
接口只是提示调用者参数该按何种方式入栈/出栈。
函数内部对参数栈的使用是固定的。
messiasss 2015-06-02
  • 打赏
  • 举报
回复
引用 6 楼 Tiger_Zhao 的回复:
你给的文章 Java Access bridge简单入门(一) 中不就明明白白写着 CallingConvention = CallingConvention.Cdecl。 它就不是 StdCall 的又有什么问题?——凭什么要 StdCall 呢?用 java 的不喜欢 COM 啊!
谢谢指点,还真的没有注意到这个细节。这两天灌的内容太多,需要理解的太多,往往细节关注不够,谢谢。 我这就去试试看,用PE-Explorer把调用模式修改了看行不行。不过,还担心有文件名修饰问题。。。。
messiasss 2015-06-02
  • 打赏
  • 举报
回复
引用 5 楼 Chen8013 的回复:
楼主,这个东西,不是“大众型”的软件,你在用,不代表别人在用(并且应该是很少人在用)。 你还是想法把这个DLL发出来吧,我从你说的下载链接,进去下载,一大堆的资源,不知道是要下载哪个。 你这个问题,象我们这种没接触过它的,只有试了才知道…………
不知怎么传上来,我也没有网盘之类的,不如我发你邮箱。
Tiger_Zhao 2015-06-01
  • 打赏
  • 举报
回复
你给的文章 Java Access bridge简单入门(一)
中不就明明白白写着 CallingConvention = CallingConvention.Cdecl
它就不是 StdCall 的又有什么问题?——凭什么要 StdCall 呢?用 java 的不喜欢 COM 啊!
舉杯邀明月 2015-06-01
  • 打赏
  • 举报
回复
楼主,这个东西,不是“大众型”的软件,你在用,不代表别人在用(并且应该是很少人在用)。 你还是想法把这个DLL发出来吧,我从你说的下载链接,进去下载,一大堆的资源,不知道是要下载哪个。 你这个问题,象我们这种没接触过它的,只有试了才知道…………
messiasss 2015-06-01
  • 打赏
  • 举报
回复
3楼:
1。这个dll,其实是一套,vb调用的是WindowsAccessBridge-32.dll

2。PE-Explorer是看不到,尝试了一下。
bcrun 2015-05-31
  • 打赏
  • 举报
回复
两个问题: 一,楼主说了半天”该DLL",但不知到底是哪个DLL. 二,“通过PE-Explorer查看dll源码”,这个PE-Explorer应该看不到DLL的源码的
messiasss 2015-05-31
  • 打赏
  • 举报
回复
楼上的,地方没错吧,就是vb调用嘛
Carlven2012 2015-05-31
  • 打赏
  • 举报
回复
是不是发错地方了?

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧