dia2dump:CoCreateInstance 失败 - HRESULT = 80040154

kgi*_*ibm 2 windows visual-studio-2017

我正在尝试使用 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 ==========
Run Code Online (Sandbox Code Playgroud)

当我在 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
Run Code Online (Sandbox Code Playgroud)

以防万一,我运行了以下并成功,但 dia2dump 失败并出现相同的错误(也在重新启动后):

regsvr32 "C:\Program Files\Common Files\Microsoft Shared\VC\msdia100.dll"
Run Code Online (Sandbox Code Playgroud)

我该如何调试?

Toe*_*Bee 7

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

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


小智 5

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

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


Kyo*_*oma 5

截至 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
Run Code Online (Sandbox Code Playgroud)

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

  • “如果 x64 不起作用,你可以尝试 x86” 升级后 2017 --> 2019 这对我有帮助 (2认同)

RED*_*AIR 5

对于 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”

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