<libname> _EXPORTS来自哪里?

时间:2017-01-30 16:13:40

标签: c++ visual-studio dll cmake

我在MSVC环境下看到过很多c ++头文件,如下所示:

#ifdef somelib_EXPORTS
#define DLLEXPORTS __declspec(dllexport)
#else
#define DLLEXPORTS __declspec(dllimport)
#endif

<libname>_EXPORTS惯例来自哪里?

它是Visual Studio的默认宏吗?或者它是由CMake生成的?

我无法找到有关此惯例的任何文件。

1 个答案:

答案 0 :(得分:0)

  

_EXPORTS惯例来自哪里?

这是一般编码指南,有助于确保.h文件在构建DLL时可以是#include d,以及DLL的用户。

名称DLLEXPORTS是特定于项目的。它可以通过CMake,qmake或手动生成。我不认为Visual Studio可以生成它们,至少我还没有看到它。

如果项目中有10个DLL,最终将使用10个这样的宏。例如,您可能有UTILITY_DLL_EXPORTMESSAGING_DLL_EXPORTKERNEL_DLL_EXPORT等。