从C#调用C ++函数时隐藏的调试信息(VS2013)

时间:2015-04-24 19:09:44

标签: c# c++ interop clr

我有一个VS2013解决方案,它包含两个项目:

  • 一个C#项目
  • 和C ++(CLR / DLL)项目

我目前正在努力解决这些问题,但到目前为止我还没有。

  1. 如果我在C ++代码中设置了一个断点并运行C#项目,那么当从C#调用C ++代码时,调试器不会中断/暂停。

  2. 我无法在C ++输入函数中调试(即查看值)局部变量:

  3. Instead of seeing an array of 0s, the debugger shows 'CppImplementationDetails

    1. 当我在VS2013中构建解决方案时,我收到此警告:
    2. C:\ Program Files (86)\的MSBuild \ 12.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(1697,5)

        

      警告MSB3270:处理器之间存在不匹配   正在构建的项目架构“MSIL”和处理器   参考的架构   “C:\ Projects \ MyProject \ Debug \ DSPClassLibrary.dll”,“x86”。

      这种不匹配可能会导致运行时故障。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者使用与项目的目标处理器体系结构相匹配的处理器体系结构依赖于引用。

      C#项目目标平台设置为:AnyCPU

      C ++项目目标平台设置为:Win32

      我不确定正确的设置是什么或我如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

  1. 您必须设置"启用本机代码调试"在C#项目的项目设置中。 将达到本机代码中的断点。有时(经常在VS2010中),您必须将C ++ / CLI中的调试器设置更改为混合调试(默认设置为auto)。

  2. 见1

  3. C#项目默认为AnyCPU。它们可以在32Bit或64Bit环境中运行。如果使用VS2013创建,则C ++默认为32Bit。您应该将C#构建设置设置为32Bit,以确保所有设置都适用于不同的环境。设置为" x86"为32位。