C++ DLL 标头包括

C++ DLL Header includes

本文关键字:包括 DLL C++      更新时间:2023-10-16

我正在Visual Studio中创建一个DLL。

我有 3 个自己的头文件,包含在 DLL 的头文件中。 我想在 DLL 内编译 3 个头文件后扔掉它们。

我尝试了很多方法来实现这一目标,但没有取得良好的效果。当我从项目中删除 3 个头文件时,我收到头文件丢失的错误。编译并创建 DLL

。DLL.h :

#ifndef DLL_H
#define DLL_H
#include "header1.h"
#include "header2.h"
#include "header3.h"
#endif

我将 DLL.h 包含在我的 main 中.cpp以使用 DLL 和包含的头文件。

我还创建了一个DLL.cpp但这个文件是空的。

如何在 Visual Studio 中设置文件或设置,以便可以从 DLL 中识别头文件,但头文件不存在?

如果这些标头与 DLL 导出的 API 无关,则不应将它们包含在 DLL 头文件中。 如果你真的想这样做,你可以用预处理器隐藏它们。

#ifndef DLL_H
#define DLL_H
// You can set BUILDING_DLL=1 in only DLL project, 
// I assume that you already have such variable to determine 
// whenever to use  __declspec(dllexport) or  __declspec(dllimport)
#if BUILDING_DLL
#include "header1.h"
#include "header2.h"
#include "header3.h"
#endif
#endif

但我鼓励你验证是否需要它。它会在没有这些标头的情况下编译吗?如果是这样,您可以简单地删除它们并仅包含在 cpp 文件中。如果没有,则无法删除它们,因为一旦您想要链接到DLL编译器必须知道来自此标头的API和ABI。例如,如果声明了用作函数参数的某种类型,编译器必须知道此类型。