【问题标题】:what is the @number in the dumpbin exports outputdumpbin 导出输出中的@number 是什么
【发布时间】:2013-12-16 14:57:47
【问题描述】:

在带有 /EXPORTS 或 /IMPORTS 的 C++ .DLL(或 IMPLIB .LIB 文件)上使用 DUMPBIN 我在输出中看到如下语法:

Exports

ordinal    name

      _CloseConduit@4
      _ConduitPort
      _GetConduitVersion@4
      _GetStatusConduit@8
      _GetTimeout@0
      _OpenConduit@4

我在任何地方都找不到@n 名称的定义。我终于得出结论,这是参数数据的字节数,但根据几个示例的推断,这让我有点紧张。任何人都可以指出参考,或以任何权威说出这里的数字是什么意思吗?

【问题讨论】:

  • 名字用extern "C"装饰,所以它本身不是直接的。
  • 这些是班级成员吗?如果是,extern "C" 将被忽略。
  • @richp:在 Windows 中,C 函数可以被“修饰”以指示调用约定。上面 RogerRowland 的链接实际上简要讨论了这一点。

标签: c++ windows dll export dumpbin


【解决方案1】:

您的结论是正确的,@n 表示函数参数的字节数。你可以找到相关的MSDN文档herehere

特别是,这就是 MSVC 在 C++ 中修饰 extern "C" __stdcall 函数的方式。请注意,这是技术上定义的实现,其他编译器确实对此进行了不同的装饰。

例如,MinGW-gcc 装饰它没有前导下划线。 Embarcadero 的编译器(以前称为 Borland)根本不装饰 __stdcall 函数,而 Digital Mar 的编译器使用与 MSVC 相同的装饰方案。

【讨论】:

    猜你喜欢
    • 2022-06-27
    • 1970-01-01
    • 2012-12-29
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多