检查非托管C++;Visual studio 2017上的对象/变量 < >我有一个引用C++ DLL的C桌面应用程序。这个dll项目是由其他人开发的,它不能在visual studio上编译,我使用带有参数-DCMAKE_BUILB=Debug的NMake来生成.dll和.PDB文件。我复制了C#project reference文件夹中的文件,并在项目属性中启用了非托管代码的调试。因此,我实际上能够从dll调试非托管代码。我的问题是,我不能检查任何对象,也不能检查在非托管代码端运行的变量。当我将鼠标移到对象/变量上时,visualstudio上下文检查器不会显示,&当我尝试添加间谍时,这并不好我需要查看非托管代码中对象/变量的值,以确保它不会出错

检查非托管C++;Visual studio 2017上的对象/变量 < >我有一个引用C++ DLL的C桌面应用程序。这个dll项目是由其他人开发的,它不能在visual studio上编译,我使用带有参数-DCMAKE_BUILB=Debug的NMake来生成.dll和.PDB文件。我复制了C#project reference文件夹中的文件,并在项目属性中启用了非托管代码的调试。因此,我实际上能够从dll调试非托管代码。我的问题是,我不能检查任何对象,也不能检查在非托管代码端运行的变量。当我将鼠标移到对象/变量上时,visualstudio上下文检查器不会显示,&当我尝试添加间谍时,这并不好我需要查看非托管代码中对象/变量的值,以确保它不会出错,c#,visual-studio,visual-studio-debugging,unmanaged,code-inspection,C#,Visual Studio,Visual Studio Debugging,Unmanaged,Code Inspection,注意:我的一个同事已经在这里打开了一个线程 但遗憾的是,由于缺乏细节,该线程被关闭,因此我尝试添加更多细节来描述该问题。 请不要关上这个 检查VisualStudio 2017 上的非托管C++对象/变量 建议 更新1 请确保您已在VS Installer中安装了C++开发和C#development工作负载。这就是所有的前提 1)当你引用DLL的路径时,确保PDB文件已经存在于引用文件夹(你引用DLL的文件夹)下,然后导入C++函数。 2)工具-->选项-->调试-->常规-->检查选项使

注意:我的一个同事已经在这里打开了一个线程 但遗憾的是,由于缺乏细节,该线程被关闭,因此我尝试添加更多细节来描述该问题。 请不要关上这个

检查VisualStudio 2017

上的非托管C++对象/变量 建议

更新1

确保您已在VS Installer中安装了C++开发C#development工作负载。这就是所有的前提

<强> 1)当你引用DLL的路径时,确保PDB文件已经存在于引用文件夹(你引用DLL的文件夹)下,然后导入C++函数。 2)工具-->选项-->调试-->常规-->检查选项使用的托管兼容模式

3)右键单击C#项目-->属性-->调试-->选中选项启用本机代码调试

同时,选中构建下的
允许不安全代码
选项

<强> 4 > <强>,如果你的C++ DLL是用x64 平台构建的,你也应该使用x64 平台调试你的C主要项目。 此外有关详细信息,您可以参考

检查VisualStudio 2017

上的非托管C++对象/变量 建议

更新1

确保您已在VS Installer中安装了C++开发C#development工作负载。这就是所有的前提

<强> 1)当你引用DLL的路径时,确保PDB文件已经存在于引用文件夹(你引用DLL的文件夹)下,然后导入C++函数。 2)工具-->选项-->调试-->常规-->检查选项使用的托管兼容模式

3)右键单击C#项目-->属性-->调试-->选中选项启用本机代码调试

同时,选中构建下的
允许不安全代码
选项

<强> 4 > <强>,如果你的C++ DLL是用x64 平台构建的,你也应该使用x64 平台调试你的C主要项目。


此外,您可以参考了解更多详细信息。

混合调试是否启用?PDB?复选框:与原始版本完全匹配所需的源文件-关闭?是混合调试打开,pdb是调试dll所需的符号文件。我在哪里可以找到那个复选框?我的意思是,你有PDB的加载吗?另外,选中“优化”处于关闭状态。复选框位于“工具”->“选项”->“调试”->“常规”中。确定完成后,如何确保加载PDB?现在我只是把它们放在参考资料中folderMixed调试是开着的吗?PDB?复选框:与原始版本完全匹配所需的源文件-关闭?是混合调试打开,pdb是调试dll所需的符号文件。我在哪里可以找到那个复选框?我的意思是,你有PDB的加载吗?另外,选中“优化”处于关闭状态。复选框位于“工具”->“选项”->“调试”->“常规”中。确定完成后,如何确保加载PDB?现在,我只是在参考了所有的建议之后,在我的文件夹里,我意识到我在Visual Studio上缺少了C++开发工具。我修改了VisualStudio实例,添加了C++管理,现在工作很好。谢谢:在尝试了你所有的建议之后,我意识到我在VisualStudio上错过了C++开发工具。我修改了VisualStudio实例,添加了C++管理,现在工作很好。谢谢,tho:)