__declspec 和 DLL导出函数.docxVIP

  • 3
  • 0
  • 约7.14千字
  • 约 8页
  • 2017-07-12 发布于河南
  • 举报
__declspec 和 DLL导出函数

__cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要注意了,只有用相同的方法才能够调用成功.另外,像printf这样接受可变个数参数的函数只有用cdecl才能够实现. __declspec主要是用于说明DLL的引出函数的,在某些情况下__declspec(dllexport)在DLL中生命引出函数,比用传统的DEF文件方便一些.在普通程序中也可以用__declspec(dllimport)说明函数是位于另一个DLL中的导出函数. 例子不太好举啊,其实就是在函数声明的时候多加一个关键字,比如很多API函数就是象这样声明的: int WINAPI MessageBoxA(HWND,LPCSTR,LPSTR,UINT); 而WINAPI实际上就是__stdcall. 大多数API都采用__stdcall调用规范,这是因为几乎所有的语言都支持__stdcall调用.相比之下,__cdecl只有在C语言中才能用.但是__cdecl调用有一个特点,就是能够实现可变参数的函数调用,比如printf,这用__stdcall调用是不可能的. __fastcall这种调用规范比较少见,但是在Borland C++ Builder中比较多的采用了这种调用方式

文档评论(0)

1亿VIP精品文档

相关文档