我有一些本机C DLL,我是从托管C ++类库(“Rem”)调用的。在“Rem”类库中,我有一个本机C ++类(api)和一个托管C ++类(API)。
现在从C#控制台应用程序调用托管类(API)(稍后将在Web应用程序中使用)。
调试时我可以单步执行我的本机代码。
我的问题是,当我调试时,除了本地声明的简单类型之外,我看不到任何变量的值。
调试器中没有函数参数,如果我尝试将它们添加为Watch,它只是说“错误:标识符'schema_name'超出范围”('schema_name'是变量名)
任何结构只会在快速监视和监视窗口中显示值“{...}”。
如果我尝试将一个监视添加到结构中的字段,我会得到值“error:'entryList.numItems'不存在”
我尝试在托管C ++中创建一个控制台应用程序并从中进行调试,同样的事情。
我试过取消选中 工具 - >选项 - >调试 - >一般 - >托管C ++兼容模式,然后我根本无法进入代码(没有为断点加载符号)
在C#console app项目中,我进入了Properties-> Debug并选中了“启用本机代码调试”(并取消选中)
在C ++类库中,我进入了Properties-> Debugging-> Debugger Type并尝试了“Mixed”,“Native”,“Managed”和“Auto”。
关于我做错了什么建议?
答案 0 :(得分:2)
我猜您使用的是Visual Studio 2012 Update 2.在这种情况下 - 这是Update 2的已知错误:
但要小心,卸载Update 2的“解决方法”会让您看到此错误报告中显示的Visual Studio损坏(是的,更新2已损坏):
如果您没有使用Update 2,这可能不是正确答案,但它可以帮助使用Update 2遇到此问题的其他人。