我在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识别头文件但是头文件不存在?
答案 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。例如。如果声明某些类型用作函数参数,则编译器必须知道此类型。