【问题标题】:dia2dump: CoCreateInstance failed - HRESULT = 80040154dia2dump:CoCreateInstance 失败 - HRESULT = 80040154
【发布时间】:2021-07-28 19:11:05
【问题描述】:

我正在尝试使用 Visual Studio 2017 及其 dia2dump 在 Windows 7 x64 上转储 PDB 的签名。我加载了C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\DIA SDK\Samples\DIA2Dump\DIA2Dump.sln。它构建成功:

1>------ Rebuild All started: Project: Dia2Dump, Configuration: Debug x64 ------
1>stdafx.cpp
1>regs.cpp
1>PrintSymbol.cpp
1>dia2dump.cpp
1>Generating Code...
1>Dia2Dump.vcxproj -> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\DIA SDK\Samples\DIA2Dump\x64\Debug\Dia2Dump.exe
1>Dia2Dump.vcxproj -> C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\DIA SDK\Samples\DIA2Dump\x64\Debug\Dia2Dump.pdb (Partial PDB)
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

当我在 PDB 上运行它时,我收到以下错误:

C:\>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\DIA SDK\Samples\DIA2Dump\x64\Debug\Dia2Dump.exe" file.pdb
CoCreateInstance failed - HRESULT = 80040154

以防万一,我运行了以下命令并成功,但 dia2dump 失败并出现同样的错误(重启后也是如此):

regsvr32 "C:\Program Files\Common Files\Microsoft Shared\VC\msdia100.dll"

如何调试?

【问题讨论】:

  • x64 类未注册。您需要使用 x64 位 msdia100.dll 运行 regsvr32
  • @RbMm dumpbin /headers 表明msdia100.dllx64

标签: windows visual-studio-2017


【解决方案1】:

截至 2018 年 6 月 20 日,我所做的是:

regsvr32 C:\Program Files\Common Files\Microsoft Shared\VC\msdia100.dll
regsvr32 C:\Program Files\Common Files\Microsoft Shared\VC\msdia90.dll
regsvr32 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\DIA SDK\bin\msdia140.dll

然后我编译为x64。它对我有用。如果x64不起作用,你可以试试x86

【讨论】:

  • "如果 x64 不起作用,您可以在 2017 年升级后尝试 x86" --> 2019 这对我有帮助
  • 如果你这样做,它适用于 x64 C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\DIA SDK\bin\amd64\msdia140.dll",Windows 10 v2004,Microsoft Visual Studio 2019 社区
【解决方案2】:

x64 类未注册。你需要使用 x64 位运行 regsvr32 msdiaXXX.dll

RbMm 已将正确答案发布为评论。但如果有人遇到同样的问题:要注册 64 位 DLL,您需要使用 C:/Windows/SYSWOW64 文件夹中的 regsvr32.exe!微软应该把它命名为regsvr64.exe...

【讨论】:

    【解决方案3】:

    我设法通过将 Dia2Dump.exe 构建为 32 位应用程序来使其工作。我在 Visual Studio Community 2017 中通过打开解决方案项目的 properties、打开 Configuration Manage...,然后将项目的平台更改为 Win32 来做到这一点。

    我重建了项目,现在我不再有CoCreateInstance failed - HRESULT = 80040154 错误!它适用于我提供的任何 pdb 文件。

    【讨论】:

      【解决方案4】:

      对于 Visual Studio 2019,我必须执行:

      regsvr32 "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\DIA SDK\bin\msdia140.dll"

      regsvr32 "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\DIA SDK\bin\amd64\msdia140.dll"

      在任何“通用文件”文件夹中都找不到这些文件

      【讨论】:

      • 我必须在电梯中运行这个(管理员)cmd.exe
      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多