My)
현상 : COMException 클래스가 등록되지 않았습니다
- VC++ 2008에서 디버그 팝업 :
- *.exe를 실행했을때 팝업:
출처: http://blog.naver.com/kyoungseop?Redirect=Log&logNo=140089392340
XP에서는 잘 동작하던 ActiveX가 비스타 64비트에서 에러를 내면서 실행을 중단하는 경우가 발생한다.
아래는 C# Client에서
ActiveX를 추가 했을때 디자인 타임에서는 별다른 이상이 없는데 F5(디버깅)을 실행하면
아래와 같이 에러를 리턴하면서 멈춘다.
발행한 에러를 캡쳐한 화면이다.
그럴때는 프로젝트 속성에서 플랫폼 대상을 x86으로 변경하면 아무 이상 없이 실행된다.
아직 64bit OS는 여러군데서 문제를 조금씩 일으키는 것 같다.
http://www.microsoft.com/korea/msdn/vstudio/express/support/issues/
My) 위 링크에서 찾을수 있는 설명을 아래에 스크랩함.
1.3 32비트 COM 구성 요소에 대한 참조는 64비트 플랫폼에서 실행되는 VB 및 C# 응용 프로그램에서 작동하지 않을 수 있습니다.
대부분의 기존 COM 구성 요소는 32비트 플랫폼에서만 사용할 수 있으며 64비트 플랫폼의 64비트 프로세스에서는 실행되지 않습니다. 하지만 64비트 플랫폼의 32비트 프로세스에서는 올바르게 실행됩니다. 이러한 32비트 COM 구성 요소를 참조하는 VB 및 C# 응용 프로그램은 기본적으로 64비트 프로세스로 시작되므로 64비트 플랫폼에서 실행되지 않습니다.
하나 이상의 COM 참조를 포함하는 프로젝트가 다음과 같은 경우일 때 이러한 문제가 발생합니다.
- VS 2005로 마이그레이션되어 64비트 플랫폼에서 실행되는 경우
-또는- - 64비트 플랫폼에서 VS 2005를 사용하여 만들어진 경우
VS 2005에서 VB 및 C# 컴파일러는 플랫폼 대상 속성을 사용하여 .exe 또는 .dll을 32비트 CPU 아키텍처 모드에서 실행할지 64비트 모드에서 실행할지 결정합니다. Visual Studio 2005에서 이 속성의 기본 설정은 'AnyCPU'로 되어 있는데 이 설정은 호스트 플랫폼에 따라 응용 프로그램이 32비트 모드와 64비트 모드 모두에서 실행될 수 있음을 나타냅니다. 이러한 상황에서 응용 프로그램을 디버깅하거나 실행하려고 하면 "클래스를 인스턴스화할 수 없습니다..."와 같은 오류가 발생합니다.
이 문제를 해결하려면
COM 구성 요소에 대한 참조가 있는 VB 또는 C# 프로젝트에 대해 플랫폼 대상 속성을 'X86'으로 설정합니다.
C# 프로젝트의 경우:
- 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 '속성'을 엽니다.
- 빌드 탭을 선택합니다.
- Platform Target 속성을 'X86'으로 설정합니다.