C++ DLL 标头包括
C++ DLL Header includes
我正在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。例如,如果声明了用作函数参数的某种类型,编译器必须知道此类型。
相关文章:
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- 可执行文件C++包括.obj,.lib和.dll吗?
- C++ DLL 标头包括
- 包括DLL中的OpenVDB;将错误与Visual Studio 2015联系起来
- 如何包括.dll描述/公司信息
- 如何将标题文件包括在C DLL文件中
- 在C++的应用程序中包括文件(dll,txt等.exe
- 包括来自C++的 C-DLL
- 包括Android Studio中的Matlab Coder dll
- 在Visual Studio 2010的dll项目中包括Qt工具
- Qt-包括DLL和压缩文件
- 在 Visual Studio 2015 的 dll 项目中包括自己的资源文件时出现链接器错误Microsoft
- 如何从C++调用Delphi DLL WideString参数(包括var参数)
- 包括第三方DLL在UWP应用程序-一步一步
- API挂钩在整个过程中生效,包括EXE和DLL
- 使用 GUIDFromString 要求(包括 Shell32.dll:我该怎么做