我正在尝试通过一个64位Java库org.eclipse.swt.internal.ole.win32.COM调用CoCreateInstance(...)。我要连接的DLL是Visual SourceSafe的DLL。该项目的目的是将一个为32位Eclipse制作的VSS插件(http://sourceforge.net/projects/vssplugin/)移植到64位Eclipse。
当我使用64位版本的org.eclipse.swt.internal.ole.win32.COM时,调用正常工作,但是使用32位版本时,调用失败。调用的使用方式如下:
调用失败并返回-2147221164,我猜这是某种错误代码,指定相应的注册表项找不到。
我尝试过的一些方法包括:
当我使用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,我猜这是某种错误代码,指定相应的注册表项找不到。
我尝试过的一些方法包括:
- 这个注册表修改:http://www.gfi.com/blog/32bit-object-64bit-environment/
- 使用32位和64位版本的regsvr32.exe取消注册/注册DLL