7

我有一些从托管 C++ 类库(“Rem”)调用的本机 C DLL。在“Rem”类库中,我有一个本地 C++ 类 (api) 和一个托管 C++ 类 (API)。

托管类 (API) 目前是从 C# 控制台应用程序调用的(稍后将在 Web 应用程序中使用)。

调试时,我可以很好地单步执行我的本机代码。

我的问题是,当我调试时,除了本地声明的简单类型之外,我看不到任何变量的值。

函数参数在调试器中不可用,如果我尝试将它们添加为 Watch,它只会显示“错误:标识符 'schema_name' 超出范围”('schema_name' 是变量名)

任何结构都只在快速监视和监视窗口中显示值“{...}”。 在此处输入图像描述

如果我尝试将手表添加到结构中的字段,我会得到值“错误:'entryList.numItems'不存在”

我试过的东西:

  • 我尝试在托管 C++ 中创建控制台应用程序并从中进行调试,同样的事情。

  • 我尝试取消选中 Tools->Options->Debugging->General->Managed C++ Compatibility Mode,然后我根本无法进入代码(没有为断点加载符号)

  • 在 C# 控制台应用程序项目中,我进入了 Properties->Debug 并选中了“启用本机代码调试”(并取消选中它)

  • 在 C++ 类库中,我进入了 Properties->Debugging->Debugger Type 并尝试了“Mixed”、“Native”、“Managed”和“Auto”。

关于我做错了什么的任何建议?

4

1 回答 1

2

我猜您正在使用 Visual Studio 2012 Update 2。在这种情况下 - 这是 Update 2 的一个已知错误:

https://connect.microsoft.com/VisualStudio/feedback/details/783004/children-cannot-be-evaluate-on-c-cli-after-vs2012-update-2

但要小心,卸载 Update 2 的“解决方法”会留下一个损坏的 Visual Studio,如此错误报告中所示(是的,Update 2 已损坏):

https://connect.microsoft.com/VisualStudio/feedback/details/785396/uninstalling-vs2012-update-2-and-repair-of-vs-results-in-atl-files-missing

如果您没有使用 Update 2,这可能不是正确的答案,但它可以帮助其他使用 Update 2 遇到此问题的人。

于 2013-04-25T08:41:12.273 回答