自定义预编译头导致编译错误

Custom precompiled headers causing compile errors

我正在尝试将预编译头文件引入我的项目,因为我现在的项目编译时间很长。我有一个包含主要功能的主项目,所有实际代码都在 DLL 项目中(它们链接在一起。)我将我的预编译头命名为 "vpch.h" 并创建了一个 vpch.cpp,其中包括 vpch.h。我使用的是 visual studio 2017,所以我进入了 vpch.cpp 的属性并选择了创建。然后我在所有 cpp 文件中添加 vpch.h 作为第一件事。所有文件都设置为使用预编译头和引用 vpch.h 每个 CPP 文件都会抛出错误:

Error C1010 unexpected end of file while looking for precompiled header. 
            Did you forget to add '#include "vpch.h"' to your source?

我不知道该怎么办,因为我已经按照很多教程进行操作,但找不到原因。除了 google 上弹出的大多数问题外,人们只是不小心包含了预编译头文件。

我唯一的想法是,也许在要求预编译头名称的属性部分中,我需要做的不仅仅是输入 "vpch.h" 和确切的文件位置?对此的任何帮助都非常感谢。

编辑

从进一步的调试来看,似乎除了一个 cpp 文件之外的所有文件都在抛出错误。不会抛出错误的是与 vpch.h 存在于同一文件夹中的那个。因此,不能只写 #include "vpch.h" 并且必须写 "../vpch.h" 之类的文件我可以写 #include <vpch.h> 我现在要尝试这样做,但我不确定是否会有帮助。

问题出在每个 CPP 文件都与预编译 header 不在同一文件夹中。 因此,如果您使用在不同文件夹中包含不同 类 的文件结构,请使用 #include "../../vpch.h" 实际上会失败。您必须将根文件夹添加到附加包含目录,然后对所有文件使用 #include <vpch.h>。我无法告诉您为什么使用 #include "../../vpch.h" 不起作用。在我看来,它失败似乎违反直觉。

可能是因为它在与您引用它的文件相同的文件夹中搜索预编译的 header。但是,这个答案可以作为解决方案。