【发布时间】:2019-04-27 11:16:27
【问题描述】:
背景:我以 Project Euler 为借口来测试各种 C++ 功能并在我的知识中找到漏洞。我有一个项目可以创建一个解决各种数学问题的可执行文件。它变得笨拙,我将问题分成单独的可执行文件。许多数学函数在几个问题中被重用。
首先:我想创建一个带有数学辅助函数的 DLL 文件。我宁愿为整个 dll 提供一个单独的 mathhelp.h 文件,而不是提供几个单独的 .h 文件,例如primes.h、cartesian.h 等/,每个都提供对 dll 中单独命名空间的访问。
这可能吗?
第二:另外,我确实想要一个 mathhelp.h 文件用于那些足够大的项目,他们只需要访问每个帮助函数而不包括五十个单独的标题。如何做到这一点在:
How to export multiple header files as a single header file in C++?
但这个答案给了我一个后续问题:如果在一个可执行项目中,我包含来自 DLL 项目的以下标头:
#ifndef MATHHELP_H
#define MATHHELP_H
#include "primes.h"
#include "cartesian.h"
#endif
...如果我在可执行项目中也没有primes.h,它如何编译?预编译器不会到达第一个 #include 并窒息我在项目中没有 primes.h 的事实吗?
【问题讨论】:
-
我创建了
dlls有一百多个头文件。因为每个类使用 1 个标头的概念。 -
但是它们是暴露给 DLL 的用户的,还是内部的?
-
是的,它们暴露在 dll 中。
-
@Marga 的回答与我所做的非常接近。也类似于
vtk、itk和Qt等大型开源软件 -
你必须告诉编译器 mathhelp.h 的位置。例如,通过设置 INCLUDE 环境变量,或您最喜欢的 IDE 使用的任何机制。只要将所有其他 .h 文件保存在同一目录中,就不必做任何特别的事情。
标签: c++ dll header-files