转载:https://www.cnblogs.com/chengbing2011/p/4084125.html

__declspec(dllimport)和__declspec(dllexport)经常是成对的,在动态链接库中__declspec(dllexport)导出dll中的成员,__declspec(dllimport)导入外部dll中的成员。

但是有时候不使用dllimport和dllexport也能实现个基本的导出导入功能, 它们具有的功能如下:

1.dllimport/dllexport可以导入或者导出动态链接库中的全局变量,当然是用extern也可以实现同样的功能;

2.dllimport/dllexport的作用主要体现在导出类的静态成员方面,如果不使用它们,无法在正常是用外部dll中类的静态成员函数;

3.隐式使用dll时,不加dllimport/dllexport也是可以,使用上没什么区别,只是在生成的二进制代码上稍微有点效率损失;

4.使用dllimport/dllexport还可以体现编程语言的对称美。

以下是一个Demo实例:

创建win的dll项目空项目名为DllExport

 ====================================.h文件如下[DllExport.h]:================================================

__declspec(dllexport)和__declspec(dllimport)  (——declspec方法创建dll的方法已验证ok)
__declspec(dllexport)和__declspec(dllimport)  (——declspec方法创建dll的方法已验证ok)
#ifdef DLLEXPORT_EXPORTS
#define DLLEXPORT_API __declspec(dllexport)
#else
#define DLLEXPORT_API __declspec(dllimport)
#endif

// class从dll中导出Demo
class DLLEXPORT_API CDllExport {
public:  CDllExport(void);  
};

//变量从dll中导出Demo
extern DLLEXPORT_API int nDllExport;

//函数从dll中导出Demo
DLLEXPORT_API int fnDllExport(void);
__declspec(dllexport)和__declspec(dllimport)  (——declspec方法创建dll的方法已验证ok)

相关文章:

  • 2021-05-19
  • 2021-08-31
  • 2021-05-29
  • 2021-10-14
  • 2021-11-23
  • 2022-01-09
猜你喜欢
  • 2021-07-09
  • 2022-01-03
  • 2022-12-23
  • 2022-02-04
相关资源
相似解决方案