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
任何人都有一些想法?