dumpbin导出输出中的@number是什么?

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

 Exports ordinal name _CloseConduit@4 _ConduitPort _GetConduitVersion@4 _GetStatusConduit@8 _GetTimeout@0 _OpenConduit@4 

我无法在任何地方find@n指定的含义。 我终于得出结论,这是参数数据的字节数,但是根据几个例子的推理,这让我有些紧张。 任何人都可以指出一个引用,或者说与任何权威,这里的数字是什么意思?

你可以得出结论: @n表示函数参数的字节数。 你可以在这里这里找到相关的MSDN文档。

特别是,MSVC如何在C ++中装饰extern "C" __stdcall函数。 请注意,这在技术上是由实现定义的,而其他编译器的设计则不同。

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