首页 相关文章 DLL(Dynamic Link Libraries)全面剖析(3)

DLL(Dynamic Link Libraries)全面剖析(3)

关于调用约定

  动态库输出函数的约定有两种:调用约定和名字修饰约定。

  1)调用约定(Calling convention):决定函数参数传送时入栈和出栈的顺序,由调用者还是被调用者把参数弹出栈,以及编译器用来识别函数名字的修饰约定。

  函数调用约定有多种,这里简单说一下:

  1、__stdcall 调用约定相当于16位动态库中经常使用的 PASCAL 调用约定。在32位的 VC++5.0 中PASCAL 调用约定不再被支持(实际上它已被定义为__stdcall。除了__pascal 外,__fortran 和__syscall也不被支持),取而代之的是 __stdcall 调用约定。两者实质上是一致的,即函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的修饰部分在后面将详细说明)。  _stdcall 是 Pascal 程序的缺省调用方式,通常用于 Win32 API 中,函数采用从右到左的压栈方式,自己在退出时清空堆...[ 查看全文 ]

2016-02-19 标签:

DLL(Dynamic Link Libraries)全面剖析(3)的相关文章

手机页面
收藏网站 回到头部