如何:生成 C 和 C++ 代码的依赖项关系图

Visual Studio 2010

1(共 1)对本文的评价是有帮助
- 评价此主题

利用此 Visual Studio 2010 功能包,可以通过在 Visual Studio 2010 旗舰版中生成依赖项关系图来可视化 C 和 C++ 代码中的组织和关系。
使用这些关系图可帮助您浏览、了解和管理源代码中、二进制文件之间以及源文件和标头文件之间的依赖项。
例如,您能够可视化二进制文件、命名空间和类之间的依赖项。
关系图将代码元素及其关系表示为一组由链接或边缘连接的节点。 有关更多信息,请参见
Visual Studio 功能包

重要事项

您必须安装 Visual Studio 2010 功能包,才能使用此功能。

若要使用 Visual C 或 Visual C++ 项目执行此任务,则必须将 Visual C# 与 Visual Studio 一起安装。

当您为 C 和 C++ 代码生成关系图时,请注意以下项:

  • 当您打开包含 C 和 C++ 项目的解决方案时,可能需要花时间更新 IntelliSense 浏览数据库。
    在此期间,用于为源文件和标头文件生成依赖项关系图的命令将不可用。

    注意

    在为这些文件生成依赖项关系图之前请等待,直到 IntelliSense 数据库完成更新。
    可在 Visual Studio 状态栏中监视这些更新的进度。
    有关因禁用某些 IntelliSense 设置而导致出现的消息的更多信息,请参见疑难解答

  • 术语“程序集”在用户界面中意指“二进制”。
    例如,若要查看解决方案中所有二进制文件之间的依赖项,请在“体系结构”菜单上指向“生成依赖项关系图”,然后单击“按程序集”。

    注意

    对于二进制文件,关系图仅显示二进制级别的依赖项。
    例如,将不会显示相同二进制内的依赖项,例如方法调用和引用类型。

  • C 和 C++ 代码的生成的关系图文档的默认名称为“AssemblyDependenciesN.dgml”,其中,N 是文档的版本号。
    可以随时重命名此文档。
  • 可为整个 Visual Studio 解决方案或特定项生成依赖项关系图。
    注意

    如果您的解决方案非常大,则生成依赖项关系图可能需要花费一些时间来分析所有文件,否则会导致出现内存不足异常。
    如果发生此情况,请减小解决方案的范围或使用体系结构资源管理器以在您生成关系图之前选择特定元素和关系。

  • 使用相同的步骤为 C 和 C++ 代码生成依赖项关系图,如同您为 .NET 代码生成依赖项关系图一样。
    有关更多信息,请参见如何:生成 .NET 代码的依赖项关系图

有关在为 C 或 C++ 代码生成依赖项关系图时可能出现的问题的信息,请参见疑难解答

查看源文件和标头文件之间的依赖项

可以可视化 C 和 C++ 源文件和标头文件之间的依赖项。
可选择依赖项的以下范围以进行可视化:

C++ 项目中的包含文件的依赖项关系图

  • 解决方案中的所有源文件和标头文件
  • 当前打开的文件以及所有第一级别源文件和标头文件

查看以下二者之间的依赖项


请执行这些步骤


解决方案中的所有源文件和标头文件


在“体系结构”菜单上,指向“生成依赖项关系图”,然后单击“按包含的文件”[By Included File]。

注意

当您首次运行此命令时,Visual Studio 必须分析 C 或 C++ 项目文件。这可能需要一些时间。若要取消关系图生成,请在出现的消息框中单击“取消”。


当前打开的文件以及所有第一级别源文件和标头文件

提示

若要查看其他级别的依赖项,请使用关系图工具栏上的“邻居浏览模式”选择要查看的依赖项级别。有关更多信息,请参见如何:在关系图文档中浏览和导航

  1. 打开源文件或标头文件。

    文件将在代码编辑器窗口中打开。

  2. 在文件中的任意位置右击,然后单击“为包含的文件生成关系图”[Generate Graph for Included Files]。

带第一级别源文件和标头文件的标头文件的依赖项关系图

疑难解答

在为 C 或 C++ 代码生成依赖项关系图时,可能会出现以下问题:


问题


可能的原因


解决方法


当您尝试从“体系结构”菜单中生成依赖项关系图时,Visual Studio 无响应。


程序数据库 (.pdb) 文件可能已损坏。

.pdb 文件将存储调试信息,例如,类型、方法和源文件信息。

有关更多信息,请参见程序数据库文件 (C++)


重新生成解决方案,然后重试。


禁用 IntelliSense 浏览器数据库的某些设置。


Visual Studio 的“选项”对话框中可能已禁用某些 IntelliSense 设置。


打开设置以启用它们。

有关更多信息,请参见“选项”对话框 ->“文本编辑器”->“C/C++”->“高级”


消息“未知方法”将出现在方法节点上。

由于无法解析方法的名称,导致出现此问题。


二进制文件可能没有基重定位表。


在链接器中打开 /FIXED:NO 选项。

有关更多信息,请参见 /FIXED(固定基址)


仅支持在 x86 体系架构上运行的二进制文件。


无法生成程序数据库 (.pdb) 文件。

.pdb 文件将存储调试信息,例如,类型、方法和源文件信息。

有关更多信息,请参见程序数据库文件 (C++)


在链接器中打开 /DEBUG 选项。

有关更多信息,请参见 /DEBUG(生成调试信息)


无法在预期位置打开或找到 .pdb 文件。


确保 .pdb 文件位于预期位置。


已从 .pdb 文件中去除调试信息。


如果链接器中已使用 /PDBSTRIPED 选项,则改为包含完整的 .pdb 文件。

有关更多信息,请参见 /PDBSTRIPPED(去除私有符号)


调用方不是函数,它是二进制文件中的形式转换 (thunk) 或数据节中的指针。


当调用方是形式转换 (thunk) 时,尝试使用 _declspec(dllimport) 以避免形式转换 (thunk)。

有关更多信息,请参见:

请参见

概念

显示现有代码

其他资源

如何:在关系图文档中浏览和导航

如何:使用依赖项关系图浏览代码

如何:编辑和自定义关系图文档

时间: 2024-10-04 12:21:27

如何:生成 C 和 C++ 代码的依赖项关系图的相关文章

npm生成的package.json文件中依赖项版本号前的波浪号(~)和插入符号(^)是啥意思?

package.json一般也就长这么模样: { "name": "", "description": "", "version": "4.17.1", "author": "", "contributors": [], "license": "MIT", "repository

对照层关系图验证代码

  包括要在验证期间分析的特定程序集或项目在 “解决方案资源管理器”中,右击建模项目或 “层引用”文件夹,然后单击 “添加引用”.    在 “添加引用”对话框中,选择所需程序集或项目,然后单击 “确定”.    随时手动验证代码从打开的层关系图中验证代码 右击关系图图面,再单击 “验证体系结构”.     说明  默认情况下,层关系图 (.layerdiagram) 文件的 “生成操作”属性设置为 “验证”,以便在验证过程中包括关系图.       “错误列表”窗口会报告发生的任何错误. 有关

未能加载文件或程序集“BLL”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。

今天使用VS2012创建项目的时候,考虑到项目中代码的重用性以及清晰简洁性,搭建了一个三层架构,但是在项目运行的时候,总是报错: “未能加载文件或程序集“BLL”或它的某一个依赖项.生成此程序集的运行时比当前加载的运行时新,无法加载此程序集.” 在网上查找了半天也没有更好的办法,突然,灵感一现,修改.net版本,果断解决这个问题, 一开始是使用的版本是3.5:修改后的版本是:4.5 修改方法: 项目=>右键=>属性=>目标 framework=>选择版本

使用EA生成多层次的代码框架

最近工作期间发现了一个非常棒的UML软件[Enterprise Architect UML 建模工具]简称EA,在该软件上绘制框架层面的类之间关系后,可以自动生成相关语言的代码. EA上目前支持的语言有 下面我们将演示,如何生成多层次的python代码框架,EA软件默认的代码是Java,我们需要定制成python,而这个定制在项目内有效,即是对项目属性进行定制. 这里我们建立一个python_hello的项目.顺序是:新建项目=====> 新建增图=====>添加图A=====>添加包=

【Android】Android Layout Binder——根据layout布局文件自动生成findViewById的java代码的神器

Android Layout Binder是一个网站,能够在线的根据layout布局文件自动生成findViewById的java代码. 网址是http://android.lineten.net/layout.php 如图:

C# 项目迁移 Microsoft.VisualStudio.Tools.Office.BuildTasks 生成解决方法报错:请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用

1.在Server2003上使用vs2010开发的项目,移到Win8上,同样使用vs2010打开.在生成解决方案的时候有如下报错: 未能从程序集 Microsoft.VisualStudio.Tools.Office.BuildTasks, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a 加载任务“FindRibbons”. 请确认 <UsingTask> 声明正确,该程序集及其所有依赖项都可用,并且该任务包

【解决方案中项目的生成顺序】由项目依赖项决定

项目依赖项: 通过“依赖项”选项卡可以确定活动解决方案中必须首先生成的项目. 项目生成顺序由谁决定: 项目生成顺序仅有依赖项决定.不在依赖项的范畴里的项目将不能决定它的生成顺序. 项目依赖项影响: 设置项目依赖项将斤规定项目所需的生成顺序.设置了A依赖于B,B会比A先生成. 至于如何依赖,由其他选项卡决定. 查看项目生成顺序: 可以右击解决方案->项目生成顺序,查看生成顺序.

服务器响应的生成:HTTP状态代码——HttpServletResponse接口应用

一 HTTP响应的格式              web服务器对客户端的响应一般包含:一个状态行,一些响应报头,一个空行和相应的文档构成.               1,状态行: 状态行由HTTP版本,一个状态代码以及一段对应状态代码的简短消息组成,表示请求是否被理解或被满足.HTTP版本由服务器决定.状态码一般由系统自动设置为200.也可以用Servlet设置状态码.消息巍峨自定义. 2,响应报. 3,空行 4,文档 二 如何设置状态代码 在向客户程序发送任何文档内容之前调用方法设置状态代码

java文本、表格word转换生成PDF加密文件代码下载

原文:java文本.表格word转换生成PDF加密文件代码下载 代码下载地址:http://www.zuidaima.com/share/1550463239146496.htm 这个实现了PDF加密功能,和一些基本的问题. java文本.表格word转换生成PDF加密文件代码下载,布布扣,bubuko.com