【问题标题】:Howto troubleshoot vb6 dll 800a01ad error in c# application如何解决 c# 应用程序中的 vb6 dll 800a01ad 错误
【发布时间】:2010-04-30 10:15:58
【问题描述】:

我有一个从 VB6 项目创建的 dll,我现在在 c# 项目中使用它。这以前有效,但现在当我尝试返回 c# 项目修复错误时,程序得到一个 COMException 说明大致翻译:

由于以下错误,无法从 IClassFactory 创建 CLSID 为 {085E3494-9F78-47D5-B0E6-FA460FD3CBED} 的 COM 组件实例:800a01ad。

所以我尝试创建一个新的空 c# 项目,主函数中只有一行:

OurNamespace.OurClass foo = new OurNamespace.OurClass();

失败并出现同样的错误。

我已经注册了 dll,但这并没有改变问题的结果。

这个问题只发生在我目前使用的机器上,我仍然有兴趣了解这个问题,以便我知道如果它发生在客户的计算机上如何解决它。

【问题讨论】:

    标签: c# dll vb6


    【解决方案1】:

    这转换为 VB6 运行时错误 429,“ActiveX 无法创建对象”。失败的不是您的 C# 代码,而是 VB6 代码有问题。您只能通过调试 VB6 代码到达某个地方。您需要 VB6 IDE,加载库项目,将 C# 程序设置为启动程序,并在您尝试在 C# 代码中创建的类的 Class_Initialize 子例程上设置断点。

    假设您不再拥有这些工具,错误 429 有很多潜在原因。最常见的问题是注册问题,通过在 VB6 代码使用的 DLL 上运行 Regsvr32.exe 来解决。

    【讨论】:

    • 问题是VB6 dll引用的另一个缺失的dll。虽然我无法确定 VB6 调试正在运行,但它让我找到了正确的位置。
    【解决方案2】:

    编译带有二进制兼容性集的 VB6 DLL。否则每次编译时 VB6 DLL 的 GUID 都会不断变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-08
      相关资源
      最近更新 更多