4

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

Exports

ordinal    name

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

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

4

1 回答 1

6

您得出的结论是正确的,@n表明函数参数的字节数。您可以在此处此处找到相关的 MSDN 文档。

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

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

于 2013-12-16T15:49:43.987 回答