DLL 导出 导入 调用约定

导出:

extern "C"  _declspec(dllexport) : 表示这个函数是DLL导出函数,可以被外部引用。

 导出类  class _declspec(dllexport) classname{...}

AFX_EXT_CLASS

导入:

 在应用工程中引用DLL中全局变量的一个更好方法是:
extern int _declspec(dllimport) global; //用_declspec(dllimport)导入

Class _declspec(dllimport) classname 来导入类

 

调用约定:

1.  __stdcall  可让VC 编写的DLL被其他语言编写的程序调用

2. __cdecl   C/C++ 调用方式

 

__stdcall方式与__cdecl对函数名最终生成符号是不同的,而且参数的入栈顺序也不同。

由于不同的调用方式下,可能最终导出的函数名称会有不同的变化(即发生了名字改编),为了防止名字改编,我们还有另一种方式来导出函数方
式(推荐使用) :

3.
 用名字定义文件的方式,即增加一个.def文件。
 .def文件格式如下:

   ; Simple.def : 导出DLL函数
   LIBRARY Simple
   EXPORTS
   ShowMessage @ 1
 
  1、注释由“;” 指定,注释不能与语句在同一行。
  2、“LIBRARY”语句说明.def文件相应的DLL;
  3、“EXPORTS”说明要导出函数的名称。“@ 1”,表示要导出函数的序号为1(在函数调用时,可以用到这个序号)
 因此,Simple.def文件的解释是:生成Simple.DLL的动态链接库,其导出ShowMessage函数,该函数的序号为1。

 

原文链接: https://www.cnblogs.com/JiMuStudio/archive/2011/06/02/2068847.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    DLL 导出 导入 调用约定

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/26622

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午4:18
下一篇 2023年2月8日 上午4:18

相关推荐