: org.eclipse.swt.internal에게 .ole.win32.COM. 연결하려고하는 DLL은 Visual SourceSafe 용 DLL입니다. 이 프로젝트의 요점은 32 비트 Eclipse 용으로 만든 VSS 플러그인 (http://sourceforge.net/projects/vssplugin/)을 64 비트 Eclipse로 이식하는 것입니다. 내가 org.eclipse.swt.internal.ole.win32.COM의 64 비트 버전을 사용하는 경우64 비트 자바 응용 프로그램에서 32 비트 COM DLL을 액세스 (레지스트리 항목을 찾을 수 없습니다)
통화가 잘 작동하지만 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/
- 등록 취소/등록 regsvr32.exe를 32 비트 및 64 비트 버전과 DLL
누구든지 이것에 대해 조언을합니까?
죄송합니다.하지만 그 답변은 끔찍하고 낙담합니다. 그것은 분명히 불가능하지 않습니다 : http://stackoverflow.com/questions/2925479/ways-to-wrap-32-bit-dll-so-it-will-work-in-a-64-bit-os – kwikness
@kwikness, 죄송합니다 또는 아닙니다, 64 비트 프로세스에서 32 비트 lib를로드 할 수 없습니다. 간단합니다. 32 비트 프로세스로 랩핑하고 RMI 또는 사용자가 느끼는 모든 것을 통해 의사 소통 할 수 있습니다. 하지만 프로세스 내에서로드 할 수는 없습니다. – bestsss
나는 그런 해결책에 반대한다는 것을 결코 언급하지 않았지만, 이것은 한 가지 SO 게시물에 대해 충분히 무의미한 똑똑한 표식입니다. 업데이트 된 답변 bmargulies 주셔서 감사합니다. – kwikness