我在MSVC环境下看到过很多c ++头文件,如下所示:
#ifdef somelib_EXPORTS
#define DLLEXPORTS __declspec(dllexport)
#else
#define DLLEXPORTS __declspec(dllimport)
#endif
<libname>_EXPORTS
惯例来自哪里?
它是Visual Studio的默认宏吗?或者它是由CMake生成的?
我无法找到有关此惯例的任何文件。
答案 0 :(得分:0)
_EXPORTS惯例来自哪里?
这是一般编码指南,有助于确保.h文件在构建DLL时可以是#include
d,以及DLL的用户。
名称DLLEXPORTS
是特定于项目的。它可以通过CMake,qmake或手动生成。我不认为Visual Studio可以生成它们,至少我还没有看到它。
如果项目中有10个DLL,最终将使用10个这样的宏。例如,您可能有UTILITY_DLL_EXPORT
,MESSAGING_DLL_EXPORT
,KERNEL_DLL_EXPORT
等。