64位java如何调用32dll_从64位Java应用程序访问32位COM DLL(找不到注册表项)

我试图通过64位Java库调用CoCreateInstance(…):org.eclipse.swt.internal.ole.win32.COM.我试图挂钩的DLL是Visual SourceSafe的DLL.该项目的目的是将为32位Eclipse制作的VSS插件(http://sourceforge.net/projects/vssplugin/)移植到64位Eclipse.

当我使用64位版本的org.eclipse.swt.internal.ole.win32.COM时,调用工作正常,但是对于32位版本,调用失败.呼叫正在使用如下:

private void init(GUID guid) {

long[] ppv = new long[1];

int result = COM.CoCreateInstance(guid, 0, COM.CLSCTX_INPROC_HANDLER | COM.CLSCTX_INPROC_SERVER | COM.CLSCTX_LOCAL_SERVER,

COM.IIDIDispatch, ppv);

if (result != COM.S_OK)

OLE.error(OLE.ERROR_CANNOT_CREATE_OBJECT, result);

init(new OleAutomation(new IDispatch(ppv[0])));

}

调用失败并返回-2147221164,我猜这是某种错误代码,指定无法找到相应的注册表项.

我尝试过的一些事情包括:

有没有人对此提出建议?

解决方法:

CoCreateInstance只是调用LoadLibraryEx,并且无法在64位进程中加载​​32位库.期间,永远.另一方面,你可以:

>获取com组件的合法64位副本.

>创建您自己的无进程COM服务器,然后调用您已获得的服务器,并调用CoCreateInstance作为其ID.

>创建一个包装此东西的Web服务,并使用java来调用它.

>回到32位Eclipse.

标签:32bit-64bit,visual-sourcesafe,java,winapi,eclipse-plugin

来源: https://codeday.me/bug/20190826/1731743.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值