문제

AxAcroPDFLib.AxAcroPDF 구성 요소를 사용하여 PDF 파일을 로드하고 인쇄하는 C#으로 작성된 WinForms 응용 프로그램이 있습니다.Windows XP에서는 아무런 문제 없이 작동해 왔습니다.개발 환경을 Vista 64비트로 옮겼으며 이제 AxAcroPDF 구성 요소를 제거하지 않으면 응용 프로그램이 Vista 64에서 실행되지 않습니다.응용 프로그램이 실행될 때 다음 오류가 발생합니다.

"System.Runtime.InteropServices.COM예외:클래스가 등록되지 않았습니다(HRESULT 예외:0x80040154(REGDB_E_CLASSNOTREG))."

Adobe 포럼에서 오류의 원인은 AxAcroPDF ActiveX 컨트롤의 64비트 버전이 없기 때문이라는 조언을 받았습니다.

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

도움이 되었습니까?

해결책

Adobe의 ActiveX 컨트롤을 직접 64비트로 변환할 수는 없지만 플랫폼 대상을 x86으로 설정하여 애플리케이션이 32비트 모드에서 실행되도록 할 수 있습니다.

사용 중인 Visual Studio 버전에 대한 지침은 섹션 1.44를 참조하세요. Microsoft Visual Studio 2005 사용 시 문제

다른 팁

.Net Framework 1.1은 항상 32비트 CPU를 대상으로 하는 반면, .Net Framework 2.0 이상은 Visual Studio IDE의 '플랫폼 대상' 옵션에 의해 변경된 프로그램 매니페스트의 processorArchitecture 속성에 따라 32비트 또는 64비트를 대상으로 할 수 있습니다.기본 옵션 '모든 CPU'를 사용하면 IL 코드가 플랫폼에 따라 컴파일되지만 플랫폼이 64비트인 경우 AxAcroPDF 32비트 구성 요소에 대한 COM 호출은 물론 실패합니다.32비트 플랫폼만을 대상으로 EXE를 다시 빌드하기만 하면 됩니다.이는 Vista 64비트의 WOW64 에뮬레이터에서 잘 작동합니다.

DLL 격리를 사용하고 모든 32비트 COM+ 응용 프로그램에서 작동합니다.자세한 내용은 다음을 참조하세요.http://support.microsoft.com/kb/281335

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

64비트 응용 프로그램은 다음 위치에서 설치된 COM+ 개체를 검색합니다.HKLM\Software\Classes, 그러나 32비트 응용 프로그램은 HKLM\Software\WOW6432\Classes를 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top