C# 检索CLSID为{}的组件的COM类工厂失败
我在运行C#Windows窗体应用程序时遇到此错误:C# 检索CLSID为{}的组件的COM类工厂失败,c#,com,interop,C#,Com,Interop,我在运行C#Windows窗体应用程序时遇到此错误: Retrieving the COM class factory for component with CLSID {} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)). 这将出现在32位Windows XP的IDE中。讨论中的COM组件是
Retrieving the COM class factory for component with CLSID {} failed
due to the following error: 80040154 Class not registered (Exception
from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
这将出现在32位Windows XP的IDE中。讨论中的COM组件是一个第三方dll,在讨论中的机器上绝对注册为ok。我的项目目标是x86 ok。我似乎只在实例化组件的特定类时出错,我使用的其他类工作正常
我尝试过直接添加作为引用的组件,还创建了一个互操作程序集并引用了它,但得到了相同的结果。已使用regsvr32取消注册并重新注册组件,但无效
如果我在VB6应用程序中引用同一个组件并实例化同一个类,它就可以正常工作!我完全糊涂了,有人能给我一些建议吗
谢谢。我通过将实例化行更改为:
Component.MyObject test = new Component.MyObject();
到
在这个阶段,我不确定为什么这样做会奏效,但这样我就可以继续下去了!我仍在实例化与new关键字一起使用的其他类。我通过将实例化行改为:
Component.MyObject test = new Component.MyObject();
到
在这个阶段,我不确定为什么这样做会奏效,但这样我就可以继续下去了!我仍在实例化与new关键字一起使用的其他类。好吧,您消除了明显的原因。剩下的是DLL地狱,您使用的类型库可能与实际安装的组件不匹配。通过运行SysInternals的ProcMon实用程序,您可以获得更多信息。您将看到您的程序在注册表中搜索CLSID键。可以使用OleView.exe程序直接查看类型库。文件+视图类型库。您通常需要组件供应商的帮助来解决这个问题。好吧,您消除了明显的原因。剩下的是DLL地狱,您使用的类型库可能与实际安装的组件不匹配。通过运行SysInternals的ProcMon实用程序,您可以获得更多信息。您将看到您的程序在注册表中搜索CLSID键。可以使用OleView.exe程序直接查看类型库。文件+视图类型库。您通常需要组件供应商的帮助来解决这个问题。