【问题标题】:Debugging a Managed Component from C++ Win32从 C++ Win32 调试托管组件
【发布时间】:2013-07-26 17:03:06
【问题描述】:

我有一个用 VC++ 编写的 Win32 EXE。我有用 C# 编写的实现。我有 VC++ EXE 使用 C# DLL,如下所述:http://support.microsoft.com/kb/828736。效果很好,但我需要能够调试。两个项目都加载到同一个 .SLN 中,但 C# 中的断点永远不会被命中。有没有办法在 VS2012 中调试这个?

【问题讨论】:

    标签: c# c++ debugging winapi com-interop


    【解决方案1】:

    尝试从 C++ 项目中添加对 C# Dll 的项目引用。如果您已经这样做了,请清理解决方案并构建。这应该可以解决问题。

    【讨论】:

    • 我在 C# 组件实例化之后设置了一个断点。查看“模块”窗口,我看到 DLL 标记为“模块未在默认加载地址加载”和“跳过 NGen 二进制文件的加载符号”。单击符号加载信息会给出:“此模块是由 ngen.exe 工具创建的预编译二进制文件。调试器不会尝试为这些二进制文件加载符号,而是在加载原始 dll/exe 时加载符号.NET 运行时。”单击加载符号让我浏览到 .PDB(它似乎已经知道),但没有帮助。
    【解决方案2】:

    啊,如果您知道要按下的正确按钮,事实证明这很容易。在 C++ 项目属性上,配置属性 -> 调试 -> 调试器类型 = “混合”。

    【讨论】:

    • 托德。你救了我的命。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多