API 用于制作 C++ 库的宏

API macro for making C++ library

我是 C++ 初学者。

我已经创建了一个 CMake 库项目, 我添加了 2 个库,一个叫做 马赛克(共享)和 mosaic_s(静态)。

问题是我如何使用宏自动为 __declspec(dllexport) 设置宏 在构建共享库时,在构建静态库时将其设置为空。

在你的 make 文件中定义一个符号,它会告诉你它是否共享,然后你可以使用像

这样的预处理器
#ifndef SHARED
#define EXPORT
#else
#define EXPORT __declspec(dllexport)
#endif

然后在你的代码中你会

EXPORT whatever_you_are_exporting

如果您在 make 文件中定义了 SAHRED,那么 EXPORT 将是 __declspec(dllexport),如果您没有定义,那么 EXPORT 将什么都不是。