我使用 dumpbin /symbols 来查看我创建的库。一些函数在输出中有UNDEF notype。这意味着什么?有没有研究dumpbin输出结构的链接?
问问题
2095 次
1 回答
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.文本
以下描述以符号编号开头的行描述了包含与用户相关的信息的列:
前三位数字是符号索引/编号。
如果第三列包含 SECTx,则符号在目标文件的该部分中定义。但是,如果出现 UNDEF,则它没有在该对象中定义,必须在其他地方解决。
第五列(静态,外部)说明符号是否仅在该对象内可见,或者它是否是公共的(在外部可见)。静态符号 _sym 不会链接到公共符号 _sym;这些将是名为 _sym 的函数的两个不同实例。
编号行中的最后一列是符号名称,包括修饰的和未修饰的。
并且notype()
正如它在锡上所说的那样:它没有类型。
于 2011-08-12T10:05:03.823 回答