在C#中调试c ++ dll

时间:2009-06-30 10:24:36

标签: c# c++ debugging dll exe

我有一个来自c ++的.dll,我想用C#调试它,但我不知道怎么做。

当我编译c ++项目时,Visual studio让我执行“.exe”。

我认为我必须创建一个执行dll的项目。

但是我输了,我怎么能调试它?

8 个答案:

答案 0 :(得分:35)

如果我理解正确,你想在调用你创建的DLL的C#项目中调试你创建的C ++编码的DLL吗?

我之前已经通过进入C#项目属性,并在Debug部分下,选中了“启用非托管代码调试”复选框。这应该允许您进入C ++ DLL。

答案 1 :(得分:18)

要从C#调试C ++,您需要做几件事。

  1. 为您的调试应用程序添加一个C#项目解决方案。
  2. 在项目属性的“调试”选项卡上将C#项目的属性编辑为“允许非托管代码调试”。
  3. 将C ++项目设置为C#项目的依赖项。
  4. 在C#项目中编写代码,以使用P / Invoke或COM来使用DLL。
  5. 在C ++代码中设置一些断点并运行C#项目。

答案 2 :(得分:5)

Visual Studio无法自行执行dll。

您需要在dll项目的属性中设置将使用C ++ dll的启动.exe。你可以从属性 - >这样做。调试 - >命令指定将调用您的dll的可执行文件的路径以及所需的任何命令行参数。

答案 3 :(得分:2)

我在Visual Studio 2019中通过选择“启用本机代码调试”来克服了这一问题,如我的C#项目的专长所示。

enter image description here

答案 4 :(得分:1)

对于VS 2017 Pro,请右键单击主项目(解决方案中的c#项目)的属性页。在“调试”菜单项上的“调试器引擎”中找到该选项,然后选择“启用本机代码调试”。

答案 5 :(得分:0)

  

SOS(罢工之子)调试扩展(SOS.dll)可帮助您进行调试   通过提供有关的信息在Visual Studio中托管代码   内部CLR环境

参考以下文章: -

MSDN ARTICLE

答案 6 :(得分:0)

为了补充 heavydCCicottaNoobie3001 的有用答案,在 Visual Studio 2017 中,当附加到调用 C++ DLL 的正在运行的 C# 进程时,我还必须更改以下内容:在 Debug > Attach to process ... 中,确保 Native codeAttach to:

enter image description here

答案 7 :(得分:0)

“调试”选项卡中的“允许非托管代码调试”选项适用于大多数人,但对我不起作用。我必须手动选择“本机”作为以下内容来调试我的 c# 代码中的 c++ dll。 仅供参考:我使用的是 vs2019,dll 是用 C++ 编写的,并通过“dllimport”加载到 C# 应用程序中。

enter image description here