使用vb6中的.NET DLL提供运行时错误430类不支持自动化

时间:2012-01-23 10:45:13

标签: .net vb6

我有一个VB6应用程序,我已经做了一些更改。这引用了在.NET 2中创建的dll,我也改变了它。当我更改了dll时,我构建了它并在VB项目中覆盖了dll。

现在当我启动VB6 exe时,我收到以下错误:

  

运行时错误430.类不支持自动化或不支持预期的接口

对我如何调试或处理此问题的任何帮助都将非常感谢。

更新:我认为它在这里爆炸

Set  get_datalist = New ADODB.Recordset

我认为它可能是MDAC的东西,因为我在Win 7机器上构建应用程序而我正在尝试在Windows XP上运行。

解决:我最终在XP机器上构建项目,感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

要查看.Net dll中进行了哪些更改,可以使用OLE视图来检查类型库。这样做:

  1. 打开OLE视图
  2. 转到文件 - >查看Typelib ....从.Net对象中选择旧版本的.tlb文件。
  3. 将IDL文件另存为文本
  4. 重复2& 3为新版本的.tlb文件
  5. 使用文件比较工具比较两个.idl文件。
  6. 这将揭示界面名称,GUID等的差异。

    如果要保持OLE接口向后兼容,则需要确保新版本对接口ID使用相同的GUID,并且该函数使用相同的参数并返回值。

答案 1 :(得分:1)

  

我认为它可能是MDAC的东西,因为我在Win 7机器上构建了应用程序

毫无疑问,请注意它是如何在ADODB.Recordset上轰炸并且与.NET代码无关。在Windows 7 SP1中为ADO发布了一个早就应该更新的更新。它解决了64位代码的类型库兼容性的唠叨问题。然而,这是破坏更改,并且需要ADO接口类型的新guid。

消息告诉您的是,您的程序是为了使用ADO的更新版本而构建的,XP机器仍在运行旧版本。核心知识库文章is here

相关问题