初始化 VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll) 时出现错误 80040154(类未注册异常)
Posted
技术标签:
【中文标题】初始化 VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll) 时出现错误 80040154(类未注册异常)【英文标题】:Error 80040154 (Class not registered exception) when initializing VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll) 【发布时间】:2011-04-30 14:59:27 【问题描述】:我正在尝试运行this 工具,以便将Visual C++ 项目转换为makefile。 我正在尝试转换项目的项目是用 VS2008 编写的,所以我使用的是版本 9 中对 Microsoft.VisualStudio.VCProjectEngine.dll 的引用。
这行失败了:
VCProjectEngine vcprojEngine = new VCProjectEngineObject();
以下例外:
检索 COM 类工厂 具有 CLSID 的组件 D19A00C4-A7F9-4E14-A5E1-D060B7EB57F3 由于以下错误而失败: 80040154 类未注册 (来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))。
当尝试向 regsvr32 注册 VCProjectEngine.dll 时,我收到一个错误,即找不到入口点 DllRegisterServer。
有什么想法吗??
提前致谢。
【问题讨论】:
【参考方案1】:这会失败的原因并不多,尤其是 regsvr32 步骤。在该 dll 上运行 dumpbin /exports。如果您没有看到 DllRegisterServer,那么您的安装已损坏。它应该有更多的副作用,你将无法再构建 C/C++ 项目。
一种标准故障模式是在 64 位操作系统上运行它。这是 32 位非托管代码,您确实会得到“类未注册”异常。项目 + 属性,构建选项卡,将平台目标更改为 x86。
【讨论】:
x86 目标平台是问题所在。谢谢! 刚刚遇到 64 位问题。谢谢一百万! @Hans Passant 对此还有什么想法吗?我正在为 x86 平台构建,但仍然收到 VB6 COM 互操作错误。我的构建机器是 Widows server 2008 R2 关于 x86 的那部分你应该完全加粗——我敢打赌 99% 的情况就是这样! @hans : 所以我的应用程序永远不能像 64 位进程一样运行?以上是关于初始化 VCProjectEngineObject (Microsoft.VisualStudio.VCProjectEngine.dll) 时出现错误 80040154(类未注册异常)的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin类的初始化 ④ ( lateinit 延迟初始化 | ::属性名称.isInitialized 检查属性是否初始化 | lazy 惰性初始化 )
Kotlin类的初始化 ④ ( lateinit 延迟初始化 | ::属性名称.isInitialized 检查属性是否初始化 | lazy 惰性初始化 )