2010-06-02 2 views
0

상황이 다소 이상하게 들릴 수 있지만 갖고있는 것과 놀아야합니다. Win2003 64 비트 서버 OS와 Visual Studio 6을 사용하여 작성된 레거시 응용 프로그램이 있습니다.이 응용 프로그램은 VB6로 작성된 ActiveX 구성 요소와이를 사용하는 C++ 코드의 두 부분으로 구성됩니다.64 비트 OS에서 Visual Basic 6 ActiveX 구성 요소를 디버그 할 수 없음

구성 요소 코드를 디버깅해야합니다. 서버에 Visual Studio 6을 설치 했으므로 구성 요소 코드로 이동할 수 있습니다. 그럼 난 상황을 다음 있어요 : 그것은 구성 요소 A. 우리가 VB6로 전환

  • 를 인스턴스화하고 VB6 코드를 구성 요소를 것 디버깅을 시작해야 할 때까지

    1. C++ 코드가 작동합니다. "실패는로드 리소스 DLL : 애초 성분 A의
    2. 이 단계 VB6 디버거에서 성분 (B)에 의해 노출 된 클래스 C의 인스턴스를 생성하여 표제 "Oledb32.dll이 " 및 다음 텍스트로 에러 메시지를 도시 C : \의 Program Files (x86) \ 공통 파일 \ 시스템 \ OLE DB \ OLEDB32R.DLL "

    추가 정보 : 클래스 C의 초기화의 마지막 단계는 OLEDB를 사용하여 SQL 서버에 대한 ADO 연결을 여는 공급자.

    이 문제를 해결하는 방법에 대한 의견을 보내 주시면 감사하겠습니다. 미리 감사드립니다.

  • 답변

    0

    VB6 디버거는 때로는 약간 희박하다는 평판을 가지고 있으며 64 비트 운영 체제에서는 지원되지 않습니다.

    VB6 디버깅을위한 몇 가지 다른 옵션이 있습니다.

      Visual C++ 6 디버거에서 VB6를 C++와 동시에 디버깅 할 수 있습니다. VB6을 기호로 원시 코드로 컴파일하십시오 (PDB 파일 작성). 그렇다면 C++에서 VB6으로 단계를 밟아 여전히 디버깅 할 수 있어야합니다. 이전에 (64 비트가 아닌)이 작업을 수행했습니다. C++ 5에서이 작업을 수행하는 데 Microsoft knowledgebase article이 있습니다. C++ 6에서와 거의 동일하다고 생각합니다. Visual C++ 2008 (!)에서 수행하는 작업은
    • info입니다. 또는 독립 실행 형 디버거 인 Windbg Microsoft의 다시 VB6을 기호 (PDB 파일)로 원시 코드로 컴파일하면 Windbg에서 VB6을 디버깅 할 수 있습니다. 또한 C++을 동시에 디버깅 할 수 있어야합니다.
      • 여기가 Windbg에 대한 간략한 소개와 다른 Microsoft VB 사람에 의한 VB6와 Windbg에서 사용에 대한 마이크로 소프트의 사람에 의해 2006 blog post2004 blog post입니다.
    0

    는 MDAC는 다음과 같이 ADO/OLEDB 클래스를 등록 프로세스 환경이 어떤 식 으로든 손상 %CommonProgramFiles%\System\Ole DB\sqloledb.dll

    확인합니다. 재시작 관리자를 사용하면 (응용 프로그램이 작동을 멈추면 재시작됩니다) 환경을 복원하지 않습니다. 우리는 이와 같은 것을 가지고 경비합니다. Sub Main

    If LenB(Environ$("CommonProgramFiles")) = 0 Then 
         Call SetEnvironmentVariable("CommonProgramFiles", pvGetSpecialFolder(ucsOdtProgramFilesCommon)) 
        End If 
        If LenB(Environ$("CommonProgramFiles(x86)")) = 0 Then 
         Call SetEnvironmentVariable("CommonProgramFiles(x86)", pvGetSpecialFolder(ucsOdtProgramFilesCommon)) 
        End If 
    
    관련 문제