首页 > 解决方案 > 导出导入的头文件中的所有函数

问题描述

我正在 Windows 上使用 cmake 和 c++ 构建一个 dll 文件。我的项目由几个头文件组成,一个完整的头文件将包含在不同的 c++ 项目中。较大的头文件如下所示:

#include "header1.h"
#include "header2.h"
#include "header3.h"
...

我读到我必须使用__declspec(dllimport)and __declspec(dllexport),所以我使用了一些 ifdef 语句,如下所示:

#ifdef _WIN32
#    ifdef EXPORT
#        define API __declspec(dllexport)
#    else
#        define API __declspec(dllimport)
#    endif
#elif
#    define API
#endif

我的问题是:我必须把它放在每个头文件中,还是我可以以某种方式为整个头文件做这件事?例如,像这样:

#include API "header1.h"
#include API "header2.h"
#include API "header3.h"
...

(不起作用,但有类似的东西吗?)

标签: c++dllcmakeshared-libraries

解决方案


没有办法避免这个样板。大多数项目只是将定义API类似宏的通用代码放在专用头文件中,并将#include其放在每个公共头文件的开头。


推荐阅读