是否导出DLL的.h中包含的内容?他们应该这样做吗? 我有一个巨大的C++项目,其中几个不同的单元被构建为DLL库。现在我有一个基本的库,它将被大多数其他项目使用

是否导出DLL的.h中包含的内容?他们应该这样做吗? 我有一个巨大的C++项目,其中几个不同的单元被构建为DLL库。现在我有一个基本的库,它将被大多数其他项目使用,c++,dll,include,C++,Dll,Include,因此,假设DLL.h文件有如下内容: #包括 #包括“OtherClass.h” 我添加了.lib路径等,以便我的其他项目可以使用DLL。事实上,我没有错误,包括在我的“主”项目的DLL 现在我的问题是,当我包含“DLL.h”时,它是否包含在我的主要项目中? 我的理由是,由于我将在几乎100%使用这个DLL的项目中使用vector,我可能会将include推到它,而不是在每个使用它的项目中都使用vector。(不确定这是最佳做法还是最差做法)。 现在的问题是,我的主要项目确实能够识别OtherC

因此,假设DLL.h文件有如下内容:
#包括

#包括“OtherClass.h”

我添加了.lib路径等,以便我的其他项目可以使用DLL。事实上,我没有错误,包括在我的“主”项目的DLL

现在我的问题是,当我包含“DLL.h”时,它是否包含在我的主要项目中? 我的理由是,由于我将在几乎100%使用这个DLL的项目中使用vector,我可能会将include推到它,而不是在每个使用它的项目中都使用vector。(不确定这是最佳做法还是最差做法)。

现在的问题是,我的主要项目确实能够识别OtherClass.h中的类型,但不能识别类型向量。这可能是因为我没有在DLL中显式使用vector,只是执行了include?

问题不在DLL链接或依赖项链接中。事实上,我忘了包括以下声明:
使用名称空间std
所以当我试着在主项目中做
向量someVector
我得到一个错误,说向量不是模板。
添加“使用”行解决了此问题。
解决这个问题的另一种方法是使用std::vector,但由于它是已经编写的代码,所以我选择了其他选项


谢谢@MadScienceDreams,你的问题实际上让我找到了答案!实际上,在这种情况下,dll中的包含链接到使用它的文件。

头文件不会随dll一起导出。与dll一起导出的唯一内容是显式修饰的函数和类
#include DLL.h
应该将依赖项链接到vector.h,所以您应该可以(假设您使用的是相同的运行库),那么您可以详细说明什么是“无法识别向量”吗?这意味着在我的main.cpp事件中,尽管我在使用vector时头中有
#include DLL.h
,但我得到了一个错误。就像忘记添加include向量线时所看到的那样。