我在一篇正在阅读的文章中看到了这段代码。
class EXAMPLEUNMANAGEDDLL_API CUnmanagedTestClass
{
public:
CUnmanagedTestClass();
virtual ~CUnmanagedTestClass();
};
EXAMPLEUNMANAGEDDLL_API做了什么?
提前致谢
这是为了将类的功能导出或导入DLL。
有关其他信息,请阅读MSDN上的这篇文章:Using dllimport and dllexport in C++ Classes
通常的做法是在类的头文件中使用条件编译,以便可以使用相同的头来生成DLL或使用DLL:
#ifdef EXAMPLEUNMANAGEDDLL_EXPORTS
#define EXAMPLEUNMANAGEDDLL_API __declspec(dllexport)
#else
#define EXAMPLEUNMANAGEDDLL_API __declspec(dllimport)
#endif
在此示例中,库的代码或构建脚本将定义符号EXAMPLEUNMANAGEDDLL_EXPORTS
。
Windows中使用此类构造来控制在构建DLL时是否正在使用该类,或者它是否用于构建DLL的用户。
在构建DLL时,EXAMPLEUNMANAGEDDLL_API
需要扩展到__declspec(dllexport)
。
当建立DLL的用户时,EXAMPLEUNMANAGEDDLL_API
需要扩展到__declspec(dllimport)
。
更多信息可在以下网址找到: