C++ 理解 __declspec(dllexport)和__declspec(dllimport)

1、解决的问题:

  考虑下面的需求,使用一个方法,一个是提供者,一个是使用者,二者之间的接口是头文件。头文件中声明了方法,在提供者那里方法应该被声明为__declspec(dllexport),在使用者那里,方法应该被声明为__declspec(dllimport)。二者使用同一个头文件,作为接口,怎么办呢?

2、解决办法:

  使用条件编译:定义一个变量,针对提供者和使用者,设置不同的值。

#ifndef DLL_H_
#define DLL_H_

#ifdef DLLProvider
#define DLL_EXPORT_IMPORT __declspec(dllexport)
#else
#define DLL_EXPORT_IMPORT __declspec(dllimport)
#endif

DLL_EXPORT_IMPORT int add(int ,int);

#endif

其实不用dllimport也是可以正常工作的,之所以用这个,是因为对于引用该头文件的外部模块来说这个标记对编译优化有作用。

猜你喜欢

转载自blog.csdn.net/weixin_40903417/article/details/87948164