【问题标题】:Debug c++ dll in C#在 C# 中调试 c++ dll
【发布时间】:2010-11-06 23:14:09
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# c++ visual-studio debugging dll


    【解决方案1】:

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

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

    【讨论】:

    • 另外,在 Visual Studio 2012 中,我找到了名为“启用本机代码调试”的选项
    • ...是的,这就是我的 VS 2017 Pro 所具备的——没有“启用无人代码 deb”。
    • 类似地,如果您有一个 C# DLL 需要在原生 c++ 项目中调试,请在原生 c++ 项目的调试部分选择“调试器类型 = 混合”。这将允许进入 cli/clr 和 c# 代码。
    • 有人知道如何在 VSCode 中为 .NET Core 应用程序配置这个吗?
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        Visual Studio 无法自行执行 dll。

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            为了补充 heavyd 和 CCicotta 和 Noobie3001 的有用答案,在 Visual Studio 2017 中,当附加到调用 C++ DLL 的正在运行的 C# 进程时,我还必须更改以下内容:在 Debug > 附加到进程...,确保本机代码由附加到:

            列出

            【讨论】:

              【解决方案7】:

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

              参考以下文章:-

              MSDN ARTICLE

              【讨论】:

                【解决方案8】:

                “调试”选项卡中的“允许非托管代码调试”选项适用于大多数人,但不适用于我。我必须手动选择“Native”,如下所示在我的 c# 代码中调试 c++ dll。 仅供参考:我使用的是 vs2019,dll 是用 c++ 编写的,并使用“dllimport”加载到 C# 应用程序中。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-11-23
                  • 1970-01-01
                  • 2020-09-19
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-02-22
                  相关资源
                  最近更新 更多