2010-06-02 80 views
0

這種情況可能聽起來有點奇怪,但我必須玩弄我擁有的東西。 有一個Win2003 64位服務器操作系統和使用Visual Studio 6編寫的遺留應用程序。該應用程序由兩部分組成:使用VB6編寫的ActiveX組件和使用它們的C++代碼。無法在64位操作系統上調試Visual Basic 6 ActiveX組件

我需要調試組件的代碼。我在服務器上安裝了Visual Studio 6,並且能夠進入組件的代碼。後來我有以下情況:

  1. C++代碼的工作,直到它需要實例組件A.
  2. 我們切換到VB6並開始調試組件的VB6的代碼。
  3. 在一開始就組分A創建了由組分B暴露在該步驟VB6調試器類C的一個實例示出了錯誤消息與標題「OLEDB32.DLL」和以下文本: 「未能加載資源DLL C:\ Program Files文件(x86)的\ Common Files文件\系統\的OLE DB \ OLEDB32R.DLL」

附加信息:在C類的初始化的最後一步是打開OLEDB使用ADO連接到SQL Server供應商。

我很感激任何想法如何解決這個問題。 在此先感謝。

回答

0

VB6調試器的聲譽有時會有點不穩定,我不確定它在64位操作系統上是否受支持。

還有一些用於調試VB6的其他選項。

  • 您可以嘗試在Visual C++ 6調試器中與C++同時調試VB6。使用符號將VB6編譯爲本地代碼(創建PDB文件)。那麼你應該能夠從C++直接進入VB6並且仍然可以進行調試。我以前做過這個(而不是64位)。這裏有一個微軟knowledgebase article與C++ 5這樣做 - 我想這是很多在C相同++ 6.下面是info上用Visual C++ 2008
  • 或者你可以嘗試在Windbg運行程序,免費獨立調試程序做它(!)來自微軟。再次將VB6編譯爲帶有符號(PDB文件)的本地代碼,您將能夠在Windbg中調試VB6。您還應該能夠同時調試C++。
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 
相關問題