Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检索CLSID为{}的组件的COM类工厂失败_C#_Com_Interop - Fatal编程技术网

C# 检索CLSID为{}的组件的COM类工厂失败

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组件是

我在运行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组件是一个第三方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程序直接查看类型库。文件+视图类型库。您通常需要组件供应商的帮助来解决这个问题。