繁体   English   中英

在 C# 中调试 C++ dll

[英]Debug c++ dll in C#

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

当我编译 c++ 项目时,Visual Studio 要求我执行一个“.exe”。

我想我必须创建一个项目来执行 dll。

但是我迷路了,我怎么调试呢?

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

我之前通过进入 C# 项目属性并在“调试”部分下选中“启用非托管代码调试”复选框来完成此操作。 这应该允许您进入您的 C++ DLL。

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

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

Visual Studio 无法自行执行 dll。

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

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

在此处输入图片说明

对于 VS 2017 Pro,通过鼠标右键单击它转到主项目(解决方案中的 c# 项目)的属性页面。 在调试菜单项中,找到调试器引擎中的选项,选择启用本机代码调试。

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

在此处输入图片说明

SOS (Son of Strike) 调试扩展 (SOS.dll) 通过提供有关内部 CLR 环境的信息来帮助您调试 Visual Studio 中的托管代码

请参阅以下文章:-

MSDN文章

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

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM