假设我们有名为 A (A.exe
)的WPF / C#项目。
它使用{C + / CLI构建的DLL
;项目 B (B.Dll
)
项目 B 取决于项目 D ,它也是使用本机C / C ++(D.Dll
)构建的DLL。
简单A.exe
- >使用B.Dll
- >使用D.Dll
以下是我的原生环境 - Windows 10,Visual Studio 2017,Visual C / C ++ 141 .NET 4.6.1 / 4.7.1。
请注意, C ++ / CLI (CLR)项目是本机C / C ++函数的包装器,这意味着它被用作本机 C / C ++ <之间的中介。 / strong>和 WPF / C#以及在一个Visual Studio解决方案下构建的所有项目,因此相应的项目被添加为对其他项目的参考。
如上所述,启动程序为A.exe
,即WPF / C#项目。
问题是我在通过Visual Studio 2017运行项目时无法调试C / C ++。
我已经尝试过以下事情:
在所有项目中将工作目录设置为构建路径(所有DLL,PDB和exe)。
在Visual Studio 2017中设置符号路径。
在相应项目中将Debugger Type
设置为Mixed
(在项目属性 - &gt;调试下)。
设置(选中)Use Managed Compatibility Mode
(Visual Studio Debug-&gt;选项 - &gt;调试下的)。
在 WPF 项目中设置(选中)Enable native code debugging
选项(项目属性 - &gt;调试 - &gt;调试器引擎)。
至少在C ++代码上标记的单个断点上,我无法中断执行。 请帮助解决这个问题。
谢谢。
答案 0 :(得分:0)
目标输出文件名应该不同,
否则首先加载模块的符号将对调试器可见。
在我的情况下, A 和 D 具有类似的目标输出文件名(不包括项目名称)。由于 A 是目标可执行文件,因此pdb
会覆盖项目 D 的pdb
。
然而,配置我在问题中提到的事情是明智的。