2009-11-09 2 views
2

거대한 세트의 레거시 32 비트 라이브러리에 의존하는 32 비트 네이티브 C++ ATL in-proc COM 서버가 있습니다. 가능한 가장 작은 변경 사항을 가진 64 비트 응용 프로그램에서 사용해야합니다.64 비트 응용 프로그램에서 32 비트 in-proc COM 서버를 사용하는 쉬운 방법은 무엇입니까?

하나의 옵션으로 COM + 응용 프로그램에 넣을 수 있습니다. 다른 쉬운 옵션은 무엇입니까?

답변

1

inproc 서버 dll을로드하지만 로컬 서버 역할을하는 32 비트 도우미 응용 프로그램을 만듭니다.

프록시 스텁 코드를 64 비트로 컴파일하십시오.

그런 다음 64 비트 응용 프로그램이 32 비트 inproc (로드 할 수 없음) 대신 32 비트 로컬 서버 (별도 프로세스)를로드하는 대신 ActiveX를로드하려고 시도하면 합법적입니다.

IDL에서 자동 생성 된 코드 인 프록시 스텁은 64 비트 용으로 작성해야합니다.

+0

많은 소리처럼 들립니다. 별도의 .exe 파일을 만들고 레지스트리 등록 방법과 프록시/스텁을 레지스트리에 작성해야합니다. – sharptooth

+0

그게 전부 표준 물건. 대안은 64 비트에서 빌드 및 작동하도록 COM dll을 리팩터링하는 것입니다. 32 비트 dll을 64 비트 프로세스에로드 할 수 없으므로 32 비트 프로세스에서 호스트하는 방법을 알아내는 것이 컨트롤을 64 비트 컨트롤로 다시 작성하지 않는 유일한 방법입니다. –

+0

예, 이해합니다. COM +에 퍼팅하는 것과 비교하면 많은 솔루션이 있습니다. 마우스로 몇 번의 클릭만으로 해결할 수 있습니다. – sharptooth

관련 문제