C#项目使用的C++ DLL调试

问题描述:

我有一个使用C++ DLL的C#项目。我正在尝试调试DLL,但Visual Studio报告说我的DLL中的“PDB与映像不匹配”。C#项目使用的C++ DLL调试

  • C++ DLL由我构建,在同一个解决方案中同时生成DLL和完整的PDB。
  • C++ DLL被标记为C#项目的依赖项。
  • 它设置的C#项目将DLL文件复制到输出目录,如果它比现有的更新。
  • C#项目启用了“启用调试本机代码”。

模块窗口下的DLL的符号加载信息显示找到正确的PDB,但抱怨“PDB与映像不匹配”。尽管这是由Visual Studio在DLL的旁边构建的PDB。

使用谷歌搜索这个错误只能让人们询问发生了什么问题,但从未提供答案。

+1

当发生这样的奇怪事情时,我会做以下事情:1.在解决方案和PATH中按名称搜索所有dll实例,并将其全部删除。搜索所有的dll pdb文件并将其删除。仅使用要调试的配置重建dll项目(例如,x64/Debug)。 2.重建c#项目并尝试再次调试。在大多数情况下,错误是由于使用的dll版本与我以前使用的不同而导致的。 –

+0

单独的项目没有这个问题。 – lsalamon

问题是复制DLL。

我已经将DLL作为“现有项目”添加到C#项目中,该项目显然将该文件复制到项目目录中。我不得不向C++项目添加一个生成后事件,以将DLL复制到C#项目的目录中。如果更新,它会将DLL复制到输出目录。