当使用dumpbin查看C ++库信息时,UNDEF和notype()的含义是什么?

时间:2011-08-12 09:53:52

标签: c++ dumpbin

我使用dumpbin / symbols来查看我创建的库。某些函数在输出中具有 UNDEF notype 。那是什么意思?是否有链接来研究dumpbin输出的结构?

1 个答案:

答案 0 :(得分:4)

我们可以看看the MSDN documentation for dumpbin /SYMBOLS

  

此选项显示COFF符号表。符号表全部存在   目标文件。 COFF符号表仅在图像文件中出现   与/ DEBUG相关联。

     

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

     

给出以下示例转储:

Dump of file main.obj
File Type: COFF OBJECT

COFF    SYMBOL    TABLE
000    00000000   DEBUG      notype      Filename      | .file
      main.cpp
002   000B1FDB   ABS      notype      Static      | @comp.id
003   00000000   SECT1      notype      Static      | .drectve
      Section length       26, #relocs   0, #linenums    0, checksum 722C964F
005   00000000   SECT2      notype      Static      | .text
      Section length      23, #relocs      1, #linenums    0, checksum 459FF65F, selection    1 (pick no duplicates)
007   00000000   SECT2      notype ()   External      | _main
008   00000000   UNDEF      notype ()   External      | ?MyDump@@YAXXZ (void __cdecl MyDump(void))

String Table Size = 0x10 bytes

Summary

      26 .drectve
      23 .text
  

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

     

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

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

  •   
  • 第五列(静态,外部)告知符号是否为   仅在该对象内可见,或者它是否是公共的(可见   外部)。静态符号_sym不会链接到Public   符号_sym;这些将是两个不同的函数实例   _sym。

  •   
  • 编号行中的最后一列是符号名称   装饰和未装饰。

  •   

并且notype()正是它在锡上的含义:它没有类型。