Vb6 无法在64位操作系统上调试Visual Basic 6 ActiveX组件

Vb6 无法在64位操作系统上调试Visual Basic 6 ActiveX组件,vb6,oledb,64-bit,Vb6,Oledb,64 Bit,这种情况听起来可能有点奇怪,但我必须利用我所拥有的。 有一个Win2003 64位服务器操作系统和一个使用Visual Studio 6编写的遗留应用程序。应用程序由两部分组成:ActiveX组件,用VB6编写,C++代码使用。 我需要调试组件的代码。我在服务器上安装了VisualStudio6,并且能够逐步进入组件的代码。然后我得到了以下情况: C++代码工作直到它需要实例化组件A。 我们切换到VB6并开始调试组件的VB6代码。 在一开始,组件A创建了一个由组件B公开的C类实例。在此步骤中,V

这种情况听起来可能有点奇怪,但我必须利用我所拥有的。 有一个Win2003 64位服务器操作系统和一个使用Visual Studio 6编写的遗留应用程序。应用程序由两部分组成:ActiveX组件,用VB6编写,C++代码使用。 我需要调试组件的代码。我在服务器上安装了VisualStudio6,并且能够逐步进入组件的代码。然后我得到了以下情况:

C++代码工作直到它需要实例化组件A。 我们切换到VB6并开始调试组件的VB6代码。 在一开始,组件A创建了一个由组件B公开的C类实例。在此步骤中,VB6调试器将显示标题为OLEDB32.DLL的错误消息和以下文本: 未能加载资源DLL C:\Program Files x86\Common Files\System\Ole DB\OLEDB32R.DLL 附加信息:C类初始化的最后一步是使用OLEDB提供程序打开到SQL server的ADO连接

我很想知道如何解决这个问题。
提前感谢。

VB6调试器有时有点古怪,我不确定它是否在64位操作系统上得到过支持

还有一些用于调试VB6的其他选项

你可以尝试在Visual C++ 6调试器中同时调试VB6,并与C++进行调试。使用符号将VB6编译为本机代码以创建PDB文件。然后,你应该能够从C++直接进入VB6,仍然调试。我以前在64位上做过这件事。这里有一个微软用C++ 5做的-我认为它在C++ 6中是一样的。下面是用Visual C++ 2008来做的! 或者您可以尝试在Microsoft提供的免费独立调试器中运行该程序。再次将VB6编译成带有符号PDB文件的本机代码,您将能够在Windbg中调试VB6。您还应该能够同时调试C++。 下面是一位微软人关于在VB6中使用Windbg的介绍,另一位微软VB人简要介绍了Windbg。
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