我正在使用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
};
我将在项目中添加更多类,我想为每个类添加单独的头文件(请告知我是否应该这样做)。但是,最终,我想将所有这些打包成单个.dll和.lib,使客户端只需要包含一个头文件。也就是说,客户端项目具有#include "MyProject.h"
,它本质上是包含其文件夹文件的头文件的集合。这有可能吗?我怎样才能做到这一点?感谢。
编辑:
具体来说,我想要做的是将Class1
放在Class1.h
和Class2
Class2.h
中,并将它们都包含在一个名为{的主标头文件中{1}}以便客户只需要执行MyLibrary.h
。
答案 0 :(得分:2)
如果您有几个头文件,如A.h,B.h等,并希望给客户端只包含所有的Project.h,那么只需在Project.h中包含所有头文件 - 如下所示:
#ifndef MY_PROJECT_H
#define MY_PROJECT_H
#include "A.h"
#include "B.h"
#endif
答案 1 :(得分:0)
对不起,我误解了你的要求。
是的,你可以拥有库头文件中包含的多个头文件(请务必将其包含在#include "..."
中)。
如果你想消除在链接器部分中指定库的需要(这是我认为你要问的那样),使用MSVC ++,你正在寻找的是
#pragma comment( comment-type [,"commentstring"] )
https://docs.microsoft.com/en-us/cpp/preprocessor/comment-c-cpp