当看到 C++ 时 UNDEF 和 notype() 是什么意思?使用dumpbin 获取库信息?

发布于 2024-11-29 12:08:12 字数 134 浏览 2 评论 0原文

我使用 dumpbin /symbols 来查看我创建的库。某些函数的输出中包含 UNDEF notype。这意味着什么?有没有任何链接来研究dumpbin输出的结构?

I used dumpbin /symbols to see the library I created. Some functions have UNDEF notype in the output. What does that mean? Is there any link to study the structure of dumpbin output?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倦话 2024-12-06 12:08:12

我们可以查看 dumpbin /SYMBOLS 的 MSDN 文档

此选项显示 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 不会链接到公共符号
    符号_sym;这将是名为的函数的两个不同实例
    _sym。

  • 编号行中的最后一列是交易品种名称,两者
    装饰和未装饰。

notype() 的含义正如其表面所言:它没有类型。

We can take a look at the MSDN documentation for dumpbin /SYMBOLS:

This option displays the COFF symbol table. Symbol tables exist in all
object files. A COFF symbol table appears in an image file only if it
is linked with /DEBUG.

The following is a description of the output for /SYMBOLS. Additional
information on the meaning of /SYMBOLS output can be found by looking
in winnt.h (IMAGE_SYMBOL and IMAGE_AUX_SYMBOL), or COFF documentation.

Given the following sample dump:

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

The following description, for lines that begin with a symbol number,
describes columns that have information relevant to users:

The first three-digit number is the symbol index/number.

  • If the third column contains SECTx, the symbol is defined in that
    section of the object file. But if UNDEF appears, it is not defined in
    that object and must be resolved elsewhere.

  • The fifth column (Static, External) tells whether the symbol is
    visible only within that object, or whether it is public (visible
    externally). A Static symbol, _sym, wouldn't be linked to a Public
    symbol _sym; these would be two different instances of functions named
    _sym.

  • The last column in a numbered line is the symbol name, both
    decorated and undecorated.

And notype() means exactly what it says on the tin: it has no type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文