Я пытаюсь вызвать CoCreateInstance (...) через 64-битную библиотеку Java: org.eclipse.swt.internal.ole.win32.COM.DLL, которую я пытаюсь подключить, является DLL для Visual SourceSafe.Суть проекта заключается в портировании плагина VSS (http://sourceforge.net/projects/vssplugin/), созданного для 32-битного Eclipse, на 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, что, я полагаю,это какой-то код ошибки, указывающий, что соответствующая запись реестра не найдена.
Вот некоторые попытки, которые я пробовал:
У кого-нибудь есть советы по этому поводу?