2008-09-15 20 views
8

AxAcroPDFLib.AxAcroPDF 구성 요소를 사용하여 PDF 파일을로드하고 인쇄하는 C#으로 작성된 WinForms 응용 프로그램이 있습니다. Windows XP에서 아무 문제없이 작동했습니다. 내 개발 환경을 Vista 64 비트로 옮겼습니다. 이제 AxAcroPDF 구성 요소를 제거하지 않으면 응용 프로그램이 Vista 64에서 실행되지 않습니다.AxAcroPDF - Vista64 클래스 등록되지 않음 오류

: 응용 프로그램이 실행될 때 나는 다음과 같은 오류가 발생합니다 "함께 System.Runtime.InteropServices.COMException : 클래스가 등록되지 않았습니다 (HRESULT에서 예외 : 0x80040154 (REGDB_E_CLASSNOTREG))를."

저는 Adobe 포럼에서 AxAcroPDF ActiveX 컨트롤의 64 비트 버전이 없다는 오류 메시지가 표시되었다고 알려졌습니다.

이 문제를 해결할 방법이 있습니까? 예를 들어 32 비트 ActiveX 컨트롤을 64 비트 컨트롤로 직접 변환 할 수 있습니까?

답변

14

Adobe의 ActiveX 컨트롤을 64 비트로 직접 변환 할 수는 없지만 플랫폼 대상을 x86으로 설정하여 응용 프로그램이 32 비트 모드로 실행되도록 할 수 있습니다. 비주얼 스튜디오 버전에 대한 지침은

Issues When Using Microsoft Visual Studio 2005

+0

아래 답변은 seaman.myopenid.com과 동일하지만 조금 더 자세하게 설명되어 있습니다. – daveywc

0

를 사용하여 DLL 분리의 섹션 1.44를 볼 때마다 32 비트 COM + 응용 프로그램과 함께 작동합니다. 추가 정보 : http://support.microsoft.com/kb/281335

이 솔루션을 사용하면 32 비트 COM + 응용 프로그램을 별도의 32 비트 프로세스로 분리 할 수 ​​있습니다.

64 비트 응용 프로그램에서 COM + 개체를 설치 검색 : HKLM \ SOFTWARE \ 클래스,하지만 32 비트 응용 프로그램을 HKLM \ SOFTWARE \ WOW6432 \ 클래스를 사용

+0

DLL 격리가 ActiveX 컨트롤과 작동합니까? 나는 비 시각적 인 구성 요소만을 고립시켜 만들 수 있다는 인상하에 있었다. 가능하다면 제어 대 배포 호출/32 비트 속도 저하에 대한 호출 수와 특성에 따라 더 나은 해결책이 될 수 있습니다 – rpetrich

6

1.1 항상 32 개 비트 CPU를 목표로하고있다 닷넷 프레임 워크 동안 닷넷 프레임 워크 2.0 위의 Visual Studio IDE의 '플랫폼 대상'옵션에 의해 변경된 프로그램 매니페스트의 processorArchitecture 속성에 따라 32 비트 또는 64 비트를 대상으로 지정할 수 있습니다. 기본 옵션 'Any CPU'를 사용하면 IL 코드가 플랫폼에 따라 컴파일되지만 물론 플랫폼이 64 비트 인 경우 AxAcroPDF 32 비트 구성 요소에 대한 COM 호출이 실패합니다. 32 비트 플랫폼 만 대상으로 EXE를 다시 작성하십시오. 이것은 Vista 64 비트의 WOW64 에뮬레이터에서 잘 작동합니다.