C++ 当看到C++;使用dumpbin获取图书馆信息?
我使用dumpbin/symbols查看我创建的库。某些函数在输出中具有UNDEFnotype。这是什么意思?有没有链接可以研究dumpbin输出的结构?我们可以看看: 此选项显示COFF符号表。符号表存在于所有数据库中 对象文件。COFF符号表仅在以下情况下才会显示在图像文件中: 与/DEBUG链接 以下是/符号输出的说明。附加的 有关符号/输出含义的信息可通过查看 在winnt.h(图像符号和图像辅助符号)或COFF文档中 给定以下示例转储: 文件main.obj的转储 文件类型:COFF对象 COFF符号表 000 00000000调试notype文件名|.file main.cpp 002 000B1FDB ABS notype Static |@comp.id 003 00000000第1节非类型静态|.drectve 截面长度26,#relocs 0,#linenums 0,校验和722C964F 005 00000000第2节notype Static |文本 截面长度23,#relocs 1,#linenums 0,校验和459FF65F,选择1(不拾取重复项) 007 00000000第2节notype()外部| U主 00800000000 UNDEF notype()外部|?MyDump@@YAXXZ(void uu cdecl MyDump(void)) 字符串表大小=0x10字节 总结 26.德雷克特 23.案文 以下描述,对于以符号编号开头的行, 描述包含与用户相关信息的列: 前三位数字是符号索引/编号C++ 当看到C++;使用dumpbin获取图书馆信息?,c++,dumpbin,C++,Dumpbin,我使用dumpbin/symbols查看我创建的库。某些函数在输出中具有UNDEFnotype。这是什么意思?有没有链接可以研究dumpbin输出的结构?我们可以看看: 此选项显示COFF符号表。符号表存在于所有数据库中 对象文件。COFF符号表仅在以下情况下才会显示在图像文件中: 与/DEBUG链接 以下是/符号输出的说明。附加的 有关符号/输出含义的信息可通过查看 在winnt.h(图像符号和图像辅助符号)或COFF文档中 给定以下示例转储: 文件main.obj的转储 文件类型:COFF对
- 如果第三列包含SECTx,则符号在该列中定义 对象文件的节。但是如果出现UNDEF,则未在中定义它 必须在其他地方解决该问题。
- 第五列(静态、外部)说明符号是否为 仅在该对象内可见,或该对象是否为公共对象(可见 外部)。静态符号_sym不会链接到公共符号 符号(sym),;这将是名为 _符号
- 编号行中的最后一列是符号名称,两者都是 装饰的和未装饰的
而
notype()
的意思正是它在tin上所说的:它没有类型。notype和notype()
之间有着巨大的区别。第一个指定数据标签,第二个指定函数标签。默认情况下,微软的链接器并不关心这种差异,但LIB会也不会解决一种类型和另一种类型之间的差异。请看一下COFF的win32扩展,类型字段中的位实际上对这些扩展有意义,尽管所有扩展都被总结为notype
。
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