C++ 当看到C++;使用dumpbin获取图书馆信息?

C++ 当看到C++;使用dumpbin获取图书馆信息?,c++,dumpbin,C++,Dumpbin,我使用dumpbin/symbols查看我创建的库。某些函数在输出中具有UNDEFnotype。这是什么意思?有没有链接可以研究dumpbin输出的结构?我们可以看看: 此选项显示COFF符号表。符号表存在于所有数据库中 对象文件。COFF符号表仅在以下情况下才会显示在图像文件中: 与/DEBUG链接 以下是/符号输出的说明。附加的 有关符号/输出含义的信息可通过查看 在winnt.h(图像符号和图像辅助符号)或COFF文档中 给定以下示例转储: 文件main.obj的转储 文件类型:COFF对

我使用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.案文 以下描述,对于以符号编号开头的行, 描述包含与用户相关信息的列:

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

  • 如果第三列包含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