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++ 预编译头文件已禁用的主要内容,如果未能解决你的问题,请参考以下文章
预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)
预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)