C++ 预编译 Header 已禁用

C++ Precompiled Header Disabled

在 Visual Studio 2015 年,我有一个 C++/CLI 项目出现以下错误:

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

我在项目选项中关闭了预编译 headers 但它一直给我同样的错误。我什至删除了预编译的 header 文件的名称,但它仍然显示 "stdafx.h".

编辑: 是的,每个源文件都没有单独启用它。

您可能已为项目禁用它,但每个单独的源文件都可以有自己特定的编译器设置。也有可能您为特定源文件禁用了 pre-compiled headers,错误地将该操作误认为是项目范围的设置。

对于解决方案资源管理器中的每个 C/C++ 文件,右键单击它并 select "Properties"。在 C/C++ -> Precompiled Headers 下,确保 Precompiled Header 设置为 "Not using Precompiled Headers"。

在解决方案资源管理器中右键单击您的项目名称,select "Properties as well" Double-check 项目设置相同。

如果有 stdafx.cpp 文件,它可能具有 "Create Precompiled Header" 设置。如果其中没有任何相关代码,您通常可以删除此文件。

对每个解决方案配置重复所有相同的步骤(例如调试和发布)。

好的。 Hans Passant 发现了发生的事情:

我用来构建它的构建配置仍然启用了预编译头文件。

微软 Visual Studio 2015:

右键单击解决方案 -> 配置属性 -> C/C++ -> 预编译 Headers -> 预编译 Header = > 不使用预编译 Headers

我遇到了同样的问题(在项目属性中关闭了预编译但错误仍然存​​在)。

解决方法: 使用任何文本编辑器打开 .proj 文件并搜索

<PrecompiledHeader>Use</PrecompiledHeader>

您会看到仍有一些属性设置可以使用它。只需将单词 "Use" 替换为 "NotUsing" 即可解决问题。

在我的例子中,我发现 pch.h 仍然设置在:c++ -> 高级 -> 强制包含文件。

无论如何,安德鲁的解决方案仍然是最好的。只需打开项目。在文本编辑器中打开文件,然后按 ctrl-f 搜索导致问题的文件名。比浏览 vs.

中的所有属性要容易得多