我使用dumpbin / symbols来查看我创建的库。某些函数在输出中具有 UNDEF notype 。那是什么意思?是否有链接来研究dumpbin输出的结构?
答案 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()
正是它在锡上的含义:它没有类型。