Com ADODB上的Exe崩溃。与“连接”;类不支持自动化“;

Com ADODB上的Exe崩溃。与“连接”;类不支持自动化“;,com,vb6,ado,Com,Vb6,Ado,一台具有MSVBVM60.dll版本6.0.97.82的机器,如旧机器。其他具有MSVBVM60.dll版本6.0.98.15的机器,如新机器。从新机器创建的Exe在旧机器上的NEW ADODB.Connection行崩溃,出现以下错误 运行时错误“430”:类不支持自动化或 支持预期接口 如何摆脱这个?我的主要目标是在旧机器上运行exe,而在新机器上创建exe。为了避免干扰新机器的配置,我尝试在旧机器上注销旧版本并注册新版本,但没有成功。ADODB.Connection是否使用了其他dll,或

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

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


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

在旧机器上修补整个VB6运行时可能是最容易的—您可以从下载

VB6运行时作为一个包分发,因此我不建议只插入某些DLL


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

这与VB运行时版本无关,与ADO库更相关(如错误行所述)这是因为微软破坏了ADO库的兼容性


解释了为什么以及基本上是针对兼容类型库重新编译的解决方案。

接受的答案对我不起作用。执行了以下步骤

  • 工具->参考
  • 取消选中:
    • Microsoft ActiveX数据对象6.1库
    • Microsoft ActiveX数据记录集6.0库
    • 用于DDL和安全性的Microsoft ADO Ext.6.0
  • 检查:
    • Microsoft ActiveX数据对象2.8库
    • Microsoft ActiveX数据记录集2.8库
    • 用于DDL和安全性的Microsoft ADO Ext.2.8

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

    我不想修补旧机器,因为它们是客户端机器。是的,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 key的版本,新版本为6.1,旧版本为2.82。新版本的VB项目引用了ActiveX数据对象2.8库,看起来也安装了MDAC 2.8!!!我按照给定的KB文章中的所有步骤进行操作,一切都进行得非常顺利,我构建了exe,它再次崩溃。请参考Jon Egerton的回答中的我的评论,在我的生成计算机上执行所有步骤,并在几天前为我重新编译修复了它。如果您的项目仍在引用“Microsoft ActiveX数据对象XXX库”,则它仍在根据不兼容的版本生成。您必须删除该引用并根据“Microsoft ActiveX Data Objects 6.0 BackCompat Library”重新生成。我只希望我能再投票支持几次。跟上开发进度以便了解已知问题的症状是很重要的,以及为什么VB6程序员应该使用VB6程序,而不是一些.Net家伙试图伪造它。干得好乌拉尔!!!我的一个项目在Data Objects 2.6上编译得很好,但一旦我更改对Data Objects 6.0 BackCompat的引用,它就不会编译,以下代码中的Value属性对于myRecordset中的每个myField都丢失了
    。Fields选择Case myField。键入Case adBoolean myString=IIf(myField.Value,“1”,“0”)
    您的新旧计算机运行的是什么操作系统?