我有一个VB6应用程序,我已经做了一些更改。这引用了在.NET 2中创建的dll,我也改变了它。当我更改了dll时,我构建了它并在VB项目中覆盖了dll。
现在当我启动VB6 exe时,我收到以下错误:
运行时错误430.类不支持自动化或不支持预期的接口
对我如何调试或处理此问题的任何帮助都将非常感谢。
更新:我认为它在这里爆炸
Set get_datalist = New ADODB.Recordset
我认为它可能是MDAC的东西,因为我在Win 7机器上构建应用程序而我正在尝试在Windows XP上运行。
解决:我最终在XP机器上构建项目,感谢您的帮助!
答案 0 :(得分:2)
要查看.Net dll中进行了哪些更改,可以使用OLE视图来检查类型库。这样做:
这将揭示界面名称,GUID等的差异。
如果要保持OLE接口向后兼容,则需要确保新版本对接口ID使用相同的GUID,并且该函数使用相同的参数并返回值。
答案 1 :(得分:1)
我认为它可能是MDAC的东西,因为我在Win 7机器上构建了应用程序
毫无疑问,请注意它是如何在ADODB.Recordset上轰炸并且与.NET代码无关。在Windows 7 SP1中为ADO发布了一个早就应该更新的更新。它解决了64位代码的类型库兼容性的唠叨问题。然而,这是破坏更改,并且需要ADO接口类型的新guid。
消息告诉您的是,您的程序是为了使用ADO的更新版本而构建的,XP机器仍在运行旧版本。核心知识库文章is here。