这个c ++类声明是什么意思?

问题描述 投票:2回答:2

我在一篇正在阅读的文章中看到了这段代码。

class EXAMPLEUNMANAGEDDLL_API CUnmanagedTestClass
{
public:
    CUnmanagedTestClass();
    virtual ~CUnmanagedTestClass();
}; 

EXAMPLEUNMANAGEDDLL_API做了什么?

提前致谢

c++
2个回答
3
投票

这是为了将类的功能导出或导入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


1
投票

Windows中使用此类构造来控制在构建DLL时是否正在使用该类,或者它是否用于构建DLL的用户。

在构建DLL时,EXAMPLEUNMANAGEDDLL_API需要扩展到__declspec(dllexport)

当建立DLL的用户时,EXAMPLEUNMANAGEDDLL_API需要扩展到__declspec(dllimport)

更多信息可在以下网址找到:

  1. Exporting from a DLL Using __declspec(dllexport)
  2. Importing into an Application Using __declspec(dllimport)
© www.soinside.com 2019 - 2024. All rights reserved.