【问题标题】:How can I generate a list of symbols used by a build product from a particular statically linked library?如何从特定的静态链接库生成构建产品使用的符号列表?
【发布时间】:2010-04-13 21:21:24
【问题描述】:

假设我有一个 Visual Studio 项目,它从 c++ 源代码构建 Windows exe 或 dll。

项目静态链接到多个库 (.lib) 文件。

我想在项目实际链接到的特定 .lib 中生成可用功能的子集。

实现此目的的一种非常粗略的方法是从链接器输入列表中删除 .lib。然后构建上的错误列表会显示所有找不到的符号。

是否有更好/正确的方法来生成此列表,我很高兴有一种解决方案可以作为项目中的自定义构建步骤运行,或者针对构建的二进制文件运行。

我查看了链接器和 dumpbin 命令行选项,但没有看到任何合适的选项。

【问题讨论】:

  • 对于它的价值,我通常完全按照您的建议(作为临时解决方案)进行 - 在没有库的情况下进行编译,并转换链接器的错误消息以生成所有必需函数的唯一列表。

标签: c++ windows visual-studio linker


【解决方案1】:

在 Visual Studio (2005) 中我能想到的两种方法:

  • 将 /VERBOSE 添加到链接器选项,或通过项目属性页下的 GUI -> 链接器 -> 常规 -> 显示进度 =“显示所有进度消息”。然后链接器输出它从哪个库链接到哪些函数。

  • 将 /MAP:mymapfile.map 添加到链接器选项,或通过项目属性页下的 GUI -> 链接器 -> 调试 -> 生成映射文件和映射文件名。这会生成一个包含符号的文本文件以及它们链接自哪些库。

这能满足你的需要吗?

【讨论】:

    【解决方案2】:

    您可以尝试使用 gnu binutils 中的 nm 实用程序来列出 .lib 文件的符号。

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      相关资源
      最近更新 更多