2017-09-05 106 views
-1

我有一個使用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

回答

0

問題是複製DLL。

我已經將DLL作爲「現有項目」添加到C#項目中,該項目顯然將該文件複製到項目目錄中。我不得不向C++項目添加一個生成後事件,以將DLL複製到C#項目的目錄中。如果更新,它會將DLL複製到輸出目錄。