C++ 预编译头文件已禁用

Posted

技术标签:

【中文标题】C++ 预编译头文件已禁用【英文标题】:C++ Precompiled Header Disabled 【发布时间】:2015-11-21 22:36:19 【问题描述】:

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

“致命错误 C1010:在查找预编译头文件时意外结束文件。您是否忘记将 '#include "stdafx.h"' 添加到源代码中?"

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

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

【问题讨论】:

您是否忘记将 '#include "stdafx.h"' 添加到您的源代码中? 尝试“清理”您的项目,然后重新构建。如果你真的删除了预编译的头文件,这应该可以工作。否则,您可能仍然在某处启用该功能 在VS2015中,需要hawkeyes注意设置对话框中选择的Configuration和Platform。顶部的两个组合框。它们通常是错误的,并且与您当前的选择不匹配,因此您将更改错误的设置。非常糟糕的虫子,我已经掉了至少两打白毛。 Jepessen,我不想使用预编译的头文件。这就是我关闭它们的原因。 谢谢汉斯。我只在一种配置中禁用了它。 【参考方案1】:

好的。 Hans Passant 发现了发生了什么:

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

【讨论】:

【参考方案2】:

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

对于解决方案资源管理器中的每个单独的 C/C++ 文件,右键单击它并选择“属性”。在C/C++ -> Precompiled Headers 下,确保Precompiled Header 设置为“不使用预编译头”。

在解决方案资源管理器中右键单击您的项目名称并选择“属性以及”仔细检查项目设置是否相同。

如果有 stdafx.cpp 文件,它可能有“创建预编译头文件”设置。如果该文件中没有任何相关代码,您通常可以将其删除。

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

【讨论】:

对于大多数人来说,这个答案比公认的答案更有用。【参考方案3】:

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

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

<PrecompiledHeader>Use</PrecompiledHeader>

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

【讨论】:

【参考方案4】:

Microsoft Visual Studio 2015:

右键解决方案 -> 配置属性 -> C/C++ -> 预编译头文件 -> 预编译头文件 => 不使用预编译头文件

【讨论】:

【参考方案5】:

就我而言,我发现 pch.h 仍然设置在:c++ -> 高级 -> 强制包含文件。

无论如何,安德鲁的解决方案仍然是最好的。只需打开项目。文件在文本编辑器和 ctrl-f 搜索导致问题的文件名。比浏览 vs 中的所有属性要容易得多。

【讨论】:

以上是关于C++ 预编译头文件已禁用的主要内容,如果未能解决你的问题,请参考以下文章

禁用在 clang 前端查找预编译的头文件

VS 总是寻找预编译的头文件

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

VS2005 MFC 预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

预编译标准库头文件 - C++