C ++ DLL Header包含

时间:2017-08-11 08:37:13

标签: c++ visual-studio dll header-files

我在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

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

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

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

1 个答案:

答案 0 :(得分:1)

如果这些标头与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。例如。如果声明某些类型用作函数参数,则编译器必须知道此类型。