mscorlib.dll中发生未处理的“System.Runtime.InteropServices.COMException”类型异常

时间:2015-06-06 16:48:09

标签: c++ dll registration

mscorlib.dll

中发生了System.Runtime.InteropServices.COMException类型的未处理异常

其他信息:

Retrieving the COM class factory for component with CLSID {613997F9-F489-4051-ACCB-1C7AE9C9E9A6} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

我在Visual Studio 2013社区遇到此错误。

我有一些原生的C ++代码,我将它们编译为x64 Debug dlls。

然后在这些dll的顶部,我使用ATL构建COM项目以通过接口公开一些功能。 (COM仅构建为x64 Debug dll版本)。在post_build事件中,我添加"%WinDir%\system32\regsvr32 /s /c "$(TargetPath)"来注册我的COM。我很确定项目设置中的所有链接器和其他选项都设置正常。这个COM DLL也很好。编译后我可以看到新的typelib已经注册。

但是当我添加一个VB.net或C#winform应用程序来测试COM(Winform只是在COM中提供一些输入和调用方法)时,我遇到了这个错误。

我知道这个问题已经讨论了很多次,但似乎所有讨论都不是我的解决方案。旧讨论最像是与32位,64位混淆和其他问题有关。

我可以从注册表中看到关键名称:

HKEY_CLASSES_ROOT\CLSID\{613997F9-F489-4051-ACCB-1C7AE9C9E9A6}
HKEY_CLASSES_ROOT\CLSID\{613997F9-F489-4051-ACCB-1C7AE9C9E9A6}\InprocServer32
HKEY_CLASSES_ROOT\CLSID\{613997F9-F489-4051-ACCB-1C7AE9C9E9A6}\Programmable
HKEY_CLASSES_ROOT\CLSID\{613997F9-F489-4051-ACCB-1C7AE9C9E9A6}\TypeLib
HKEY_CLASSES_ROOT\CLSID\{613997F9-F489-4051-ACCB-1C7AE9C9E9A6}\Version

我也可以看到InProcServer32键显示了我的COM dll的正确路径。

我的电脑是64位机器,操作系统是Windows 8.1

任何人都有一些想法?

0 个答案:

没有答案
相关问题