2011-10-19 2 views
3

VB6을 사용하여 Windows XP SP3 용으로 개발 된 응용 프로그램에서 작업하고 있습니다. 현재 Windows 7에서 작동하도록하고 있지만 맞춤 OCX 파일 중 하나에 문제가 있습니다. 문제 OCX에 포함 된 컨트롤의 인스턴스를 포함하는 폼로드를 시도 할 때Windows 7에서 VB6 OCX를로드 할 수 없습니다. 오류 372

는 다음과 같은 오류가 생성됩니다 y.ocx에서 'X'컨트롤을로드

을하지 못했습니다. y.ocx 버전이 오래되었습니다. 응용 프로그램과 함께 제공된 버전의 컨트롤을 사용하고 있는지 확인하십시오.

버전 번호를 확인했는데 모두 정확하며 올바른 버전을 참조했습니다. OCX 잘 등록하고 모든 예상 된 레지스트리 항목이 있습니다.

DependencyWalker로 검사하면 누락 된 종속성이 표시되지 않습니다. Windows에서 실행 때이의 잘못된 OCX 부분으로 VB6 그룹 (사용 VB6의 IDE를 통해 실행하는 경우

, 7

흥미롭게도 (겉으로는) 유일한 문제를 소프트웨어는 XP에서 잘 작동이입니다 그룹 및 응용 프로그램 시작 프로젝트), 난 문제가되지 않습니다. IDE를 통해 자체적으로 응용 프로그램을 실행해도 여전히 오류가 발생합니다.

무엇이 누락되어 응용 프로그램이이 오류를 발생시킬 수 있는지에 대한 아이디어가 있습니까?

Windows 7 Professional 및 Home Professional 모두에서 오류가 발생합니다. 둘 다 32 비트입니다.

+0

Windows 7에서도 VB6이 지원됩니까? –

+0

@jacksmith - 공식적으로는 지원되지 않을 수도 있지만 [VB6 IDE가 Windows 8에서도 실행됩니다] (http://vb6zone.blogspot.com/2011/09/vb6-on-windows-8.html) –

+1

등록 문제입니다. 상승 된 명령 프롬프트에서 regsvr32.exe를 실행하십시오. 64 비트 버전의 Windows에서는 c : \ windows \ syswow64 버전을 사용하십시오. –

답변

0

나는 이것이 UAC 문제라고 생각합니다. 즉시 문제가 해결되는지 보려면 turning UAC off을 시도하십시오. 그런 다음 'run as administrator'및/또는 create a manifest 응용 프로그램을 사용하여 모든 항목을 등록해야합니다.

4

이것은 거의 인터페이스 호환성 문제입니다. COM 인터페이스는 메이저/마이너/리비전 번호와 완전히 별개로 버전이 지정됩니다.이 번호는 설치 프로그램에서 사용하는 경우를 제외하고는 메모가 아닙니다.

어딘가에 바이너리 호환성이 깨졌고 응용 프로그램이 컴파일 된 것보다 새로운 인터페이스로 라이브러리를 배포하려고합니다.

HKEY_CLASSES_ROOT\CLSID\{class Id GUID}\VERSION 

프로그램이 제거 된 OCX, 새로운 세트에 옛 참조가 필요하고 그것을 다시 컴파일해야합니다

이 버전 번호는 같은 키에서 발견된다. 이것은 또한 컨트롤의 모든 인스턴스를 삭제하고 하나씩 다시 추가하는 것을 의미합니다.

나는 이것이 Windows 7의 문제라고 생각하지 않습니다.

0

OCX에 포함 된 컨트롤의 사운드가 일반 등록 오류가 아닌로드하는 데 문제가 있습니다. x 컨트롤에 대한 생성자를 살펴보고 UAC 등에 동의하지 않는 사항이 있는지 확인하십시오. 이 디버깅 할 수있는 한 가지 방법은 컨트롤을 초기화하기 전에 일종의 휴식 시간을두고 Visual Studio에서 응용 프로그램을 디버깅합니다 (VB6에서 PDB를 만드는 것을 잊지 마십시오). 그런 다음 컨트롤에서 왜 ' t 초기화.