dllimport和dllexport的作用

疑问

经常在一些项目的源代码中看到如下所示的代码,这究竟有何用意呢?

#ifdef DLL_EXPORTS
      #define SIMPLE_EXPORT __declspec(dllexport)
#else
      #define SIMPLE_EXPORT __declspec(dllimport)
#endif

dllexport vs dllimprot

先解释一下__declspec(dllexport)和__declspec(dllimport)的作用:

dllexport是在这些类、函数或者数据在声明的时候使用的,目的是表明这些东西可以被外部函数使用。
dllimport是在外部程序需要使用DLL内相关内容时使用的,目的是告诉编译器这些函数、类或者数据是从外部导入的。

那上面这几行代码有何作用呢?

原来,我们在编译DLL库时,是会定义DLL_EXPORTS这个宏的,这时使用的是__declspec(dllexport)这个关键字,表明这些函数是导出的,可以被外部调用;
但在调用DLL这个库时,也一样要包含这个头文件,而且函数声明的时候也同样加了SIMPLE_EXPORT用以修饰;而这时是没有定义DLL_EXPORTS这个宏的,使用的是__declspec(dllimport)这个关键字,告诉外部程序,使用的接口是从外部导入的。

注意:其实dllimport不声明也行,但是官方是建议声明的:使用__declspec(dllimport)会生成更好的代码。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值