使用dumpbin查看C++库信息时UNDEF和notype()是什么意思?

Ven*_*mar 1 c++ dumpbin

我使用 dumpbin /symbols 来查看我创建的库。一些功能有民主基金 NoType在输出。这意味着什么?有没有研究dumpbin输出结构的链接

In *_*ico 5

我们可以看看MSDN 文档dumpbin /SYMBOLS

此选项显示 COFF 符号表。符号表存在于所有目标文件中。只有在与 /DEBUG 链接时,COFF 符号表才会出现在图像文件中。

以下是 /SYMBOLS 的输出说明。通过查看 winnt.h(IMAGE_SYMBOL 和 IMAGE_AUX_SYMBOL)或 COFF 文档,可以找到有关 /SYMBOLS 输出含义的其他信息。

鉴于以下示例转储:

转储文件 main.obj
文件类型:COFF 对象

COFF 符号表
000 00000000 DEBUG notype 文件名 | 。文件
      主程序
002 000B1FDB ABS notype 静态 | @comp.id
003 00000000 SECT1 notype 静态 | .drectve
      段长度 26,#relocs 0,#linenums 0,校验和 722C964F
005 00000000 SECT2 notype 静态 | 。文本
      部分长度 23,#relocs 1,#linenums 0,校验和 459FF65F,选择 1(不选择重复项)
007 00000000 SECT2 notype () 外部 | _主要的
008 00000000 UNDEF notype () 外部 | ?MyDump@@YAXXZ (void __cdecl MyDump(void))

字符串表大小 = 0x10 字节

概括

      26 .drectve
      23 .text

对于以符号编号开头的行,以下描述描述了具有与用户相关的信息的列:

前三位数字是符号索引/编号。

  • 如果第三列包含 SECTx,则符号在目标文件的该部分中定义。但是如果出现 UNDEF,则它没有在该对象中定义,必须在其他地方解决。

  • 第五列(静态、外部)说明该符号是仅在该对象内可见,还是公共(在外部可见)。静态符号 _sym 不会链接到公共符号 _sym;这将是名为 _sym 的函数的两个不同实例。

  • 编号行中的最后一列是符号名称,包括修饰的和未修饰的。

notype()它在罐头上所说的完全一样:它没有类型。