首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在64位操作系统上调试Visual 6 ActiveX组件

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

Stack Overflow用户
提问于 2010-06-02 14:02:15
回答 2查看 1.6K关注 0票数 0

这种情况听起来可能有点奇怪,但我必须用我所拥有的来玩。有一个Win2003 64位服务器操作系统和一个用Visual 6编写的遗留应用程序。这个应用程序由两部分组成:用VB6编写的ActiveX组件和使用它们的C++代码。

我需要调试组件的代码。我在服务器上安装了Visual 6,并且能够进入组件的代码。然后我发现了以下情况:

  1. C++代码可以工作,直到需要实例化组件A。
  2. 我们切换到VB6并开始调试组件的A VB6代码。
  3. 在开始时,组件A创建一个由组件B公开的C类实例。在这一步中,VB6调试器显示标题为"OLEDB32.DLL"的错误消息,以下文本:未能加载资源DLL C:\Program (x86)\Common \System\Ole DB\OLEDB32R.DLL"

附加信息:C类初始化的最后一步是使用OLEDB提供程序打开到SQL服务器的ADO连接。

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

EN

回答 2

Stack Overflow用户

发布于 2010-06-02 15:24:21

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

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

  • 您可以尝试在VisualVB6 6调试器中与C++ 6调试器同时调试C++。将VB6编译成带有符号的本机代码(创建PDB文件)。然后,您应该能够从C++直接进入VB6,并且仍然可以进行调试。我以前也这么做过(不是64位)。这是一个微软的知识库文章,它是用C++ 5来完成的--我认为在C++ 6中是一样的。下面是使用VisualC++ 2008的信息 (!)
  • 或者,您可以尝试在温布格中运行该程序,这是一个来自微软的免费独立调试器。再次将VB6编译为带有符号的本机代码(PDB文件),您将能够在Windbg中调试您的VB6。您还应该能够同时调试C++。
    • 这里是一个微软家伙关于在VB6中使用Windbg的2006年博文,以及另一个Microsoft家伙的2004年博文,简要介绍了Windbg。

票数 0
EN

Stack Overflow用户

发布于 2012-05-01 16:11:18

MDAC注册ADO/OLEDB类,如下所示:%CommonProgramFiles%\System\Ole DB\sqloledb.dll

检查您的流程环境是否以某种方式损坏。如果使用“重新启动管理器”(当应用程序崩溃时重新启动),则不会恢复环境。在Sub Main中,我们用这样的东西来守卫

代码语言:javascript
复制
    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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2958428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档