如何在 C++ 中将多个头文件导出为单个头文件?
How to export multiple header files as a single header file in C++?
我正在使用 Visual Studio 开发 DLL。目前,我有一个头文件:MyProject.h
:
#pragma once
#ifdef MYLIBRARY_EXPORTS
#define MYLIBRARY_API __declspec(dllexport)
#else
#define MYLIBRARY_API __declspec(dllimport)
#endif
#include <map>
#include <string>
extern "C" class MYLIBRARY_API Class1
{
// some stuff here...
};
extern "C" class MYLIBRARY_API Class2
{
// some stuff here
};
我将向项目添加更多 classes,我想为每个 class 添加单独的头文件(如果我不应该这样做,请告知)。但是,最终,我想将所有这些打包到一个 .dll 和 .lib 中,这样客户端只需要包含一个头文件。也就是说,客户端项目有 #include "MyProject.h"
,它本质上是头文件及其实现文件的集合。这可能吗?我怎样才能做到这一点?谢谢。
编辑:
具体来说,我想做的是把Class1
放在Class1.h
里,把Class2
放在Class2.h
里,把它们都包含在一个主头文件里称为 MyLibrary.h
,这样客户只需要做 #include "MyLibrary.h"
。
抱歉,我误解了你的意思。
是的,您的库头文件中可以包含多个头文件(请务必将它们包含在 #include "..."
中)。
如果你想消除在链接器部分指定库的需要(这就是我认为你要问的),使用 MSVC++,你正在寻找的东西是
#pragma comment( comment-type [,"commentstring"] )
https://docs.microsoft.com/en-us/cpp/preprocessor/comment-c-cpp
如果您有多个头文件,例如 A.h、B.h 等,并且只想为客户端提供包含所有内容的 Project.h,那么只需将所有头文件包含在 [=15 中即可=] - 像这样:
#ifndef MY_PROJECT_H
#define MY_PROJECT_H
#include "A.h"
#include "B.h"
#endif
我正在使用 Visual Studio 开发 DLL。目前,我有一个头文件:MyProject.h
:
#pragma once
#ifdef MYLIBRARY_EXPORTS
#define MYLIBRARY_API __declspec(dllexport)
#else
#define MYLIBRARY_API __declspec(dllimport)
#endif
#include <map>
#include <string>
extern "C" class MYLIBRARY_API Class1
{
// some stuff here...
};
extern "C" class MYLIBRARY_API Class2
{
// some stuff here
};
我将向项目添加更多 classes,我想为每个 class 添加单独的头文件(如果我不应该这样做,请告知)。但是,最终,我想将所有这些打包到一个 .dll 和 .lib 中,这样客户端只需要包含一个头文件。也就是说,客户端项目有 #include "MyProject.h"
,它本质上是头文件及其实现文件的集合。这可能吗?我怎样才能做到这一点?谢谢。
编辑:
具体来说,我想做的是把Class1
放在Class1.h
里,把Class2
放在Class2.h
里,把它们都包含在一个主头文件里称为 MyLibrary.h
,这样客户只需要做 #include "MyLibrary.h"
。
抱歉,我误解了你的意思。
是的,您的库头文件中可以包含多个头文件(请务必将它们包含在 #include "..."
中)。
如果你想消除在链接器部分指定库的需要(这就是我认为你要问的),使用 MSVC++,你正在寻找的东西是
#pragma comment( comment-type [,"commentstring"] )
https://docs.microsoft.com/en-us/cpp/preprocessor/comment-c-cpp
如果您有多个头文件,例如 A.h、B.h 等,并且只想为客户端提供包含所有内容的 Project.h,那么只需将所有头文件包含在 [=15 中即可=] - 像这样:
#ifndef MY_PROJECT_H
#define MY_PROJECT_H
#include "A.h"
#include "B.h"
#endif