【问题标题】:Exe Crash At ADODB.Connection with "Class does not support Automation"ADODB.Connection 的 Exe 崩溃,“类不支持自动化”
【发布时间】:2012-02-24 01:43:36
【问题描述】:

一台具有 MSVBVM60.dll 版本 6.0.97.82 的机器,比如 OLD。其他具有 MSVBVM60.dll 版本 6.0.98.15 的机器,比如 NEW。从新机器创建的 Exe 在旧机器上的 new ADODB.Connection 行崩溃,出现以下错误

运行时错误“430”:类不支持自动化或不支持 支持预期接口

如何摆脱这个?我的主要目标是在新机器上创建时在旧机器上运行 exe。为了避免干扰新机器的配置,我尝试在旧机器上注销旧版本并注册新版本,但没有成功。 ADODB.Connection 是否使用了任何其他 dll,或者我需要做一些完全不同的事情来摆脱它?

【问题讨论】:

  • 您的新旧电脑运行什么操作系统?

标签: com vb6 ado


【解决方案1】:

这与 VB 运行时版本无关,更多的是与 ADO 库有关(正如错误行所暗示的),并且是由 Microsoft 在其 ADO 库中破坏兼容性造成的。

KB article 2517589 解释了原因和解决方案,基本上是针对兼容性类型库重新编译。

【讨论】:

  • 我按照给定知识库文章中的所有步骤进行操作,一切正常,我构建了 exe,但它又崩溃了。请在 Jon Egerton 的回答下参考我的 cmets
  • 按照我的构建机器上的所有步骤并重新编译几天前为我修复了它。
  • 如果您的项目仍在引用“Microsoft ActiveX 数据对象 XXX 库”,那么它仍在针对不兼容的版本进行构建。您必须删除该引用并针对“Microsoft ActiveX 数据对象 6.0 BackCompat 库”进行重建。
  • 我只希望我能再投票几次。跟上发展,以便您了解已知问题的症状很重要,以及为什么 VB6 程序员应该使用 VB6 程序,而不是一些试图伪造它的 .Net 人。干得好!
  • URRRR!!!我的一个项目在 Data Objects 2.6 上编译良好,但是一旦我更改对 Data Objects 6.0 BackCompat 的引用,它就无法编译,以下代码中的 Value 属性丢失For Each myField In myRecordset.Fields Select Case myField.Type Case adBoolean myString = IIf(myField.Value, "1", "0")
【解决方案2】:

在旧机器上修补整个 VB6 运行时可能是最简单的方法 - 您可以从 here 下载。

VB6 运行时以包的形式分发,因此我不建议只插入某些 dll。

我还建议检查您正在运行的两台机器是否使用相同版本的 MDAC,尤其是旧机器是否安装了您项目中引用的版本。

【讨论】:

  • 我不想修补旧机器,因为它们是客户端机器。是的,MDAC 的版本不同,但是,我同时在新机器上运行 VS6.0 和 VS2010。两个版本的 MDAC 可以安装在同一台机器上吗?
  • 是的,有很多版本很好。在 VB6 中,您可以安装 MDAC 版本 2.1 到 2.6(同时安装)。您的项目使用的版本必须存在于客户端上。
  • 另请注意,Vista+ 具有特定版本的 VB 运行时,您无法替换这些版本,并且不得安装在以前版本的 Windows 上。 Vista 之前的任何东西都应该使用 SP6 运行时。
  • 1- CompChecker 实用程序无法在新运行的 Windows 7 上运行,因此我检查了 HKLM\Software\Microsoft\DataAccess FullInstallVer 密钥的版本,新版本为 6.1,旧版本为 2.82 2-VB 项目NEW 引用 ActiveX Data Objects 2.8 Library,看起来 MDAC 2.8 也安装了!!!
【解决方案3】:

接受的答案对我不起作用。以下步骤已完成。

  1. 工具 -> 参考资料
  2. 取消选中:
    • Microsoft ActiveX 数据对象 6.1 库
    • Microsoft ActiveX 数据记录集 6.0 库
    • Microsoft ADO 分机。 6.0 用于 DDL 和安全性
  3. 检查:
    • Microsoft ActiveX 数据对象 2.8 库
    • Microsoft ActiveX 数据记录集 2.8 库
    • Microsoft ADO 分机。 2.8 用于 DDL 和安全性

【讨论】:

    【解决方案4】:

    “类不支持自动化”。 使用 64 位版本的 windows 在 vb 6.0 中编译并尝试在 32 位版本的 windows 上运行时会生成此错误。用 32 位重新编译修复了错误

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 2016-03-25
      相关资源
      最近更新 更多