c++ - 导出导入的头文件中的所有函数
问题描述
我正在 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"
...
(不起作用,但有类似的东西吗?)
解决方案
没有办法避免这个样板。大多数项目只是将定义API
类似宏的通用代码放在专用头文件中,并将#include
其放在每个公共头文件的开头。
推荐阅读
- mysql - 在 MySQL 中更新列中的 WHERE 子句与 - OR LOGICAL 运算符结合使用
- azure-data-explorer - 如何使用先前定义/让 externaldata 执行“in”表达式
- amazon-web-services - 将 180 万的 S3 文件夹从私有更改为公共读取失败,没有详细错误
- laravel - 将 PUT 请求更改为 POST 请求以包括图像更新
- google-cloud-platform - 将文件从项目 A 上的 GCP 计算引擎复制到项目 B 上的存储桶会导致 403 Insufficient Permission
- c# - MVVM 与 UI 元素或替代方法交互的正确位置
- google-apps-script - 在 Gmail iOS 应用中为 Gmail 获取组织 GSuite 插件
- python - 在python中删除多个excel文件的索引列
- azure-active-directory - 基于组成员资格的用户配置范围筛选器
- linux - 删除所有旧文件,但使用 ansible-playbook 保留最新的 4 个文件