C++ 预编译头已禁用。

5
在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?"
我在项目选项中关闭了预编译头,但它仍然给出相同的错误。我甚至删除了预编译头文件的名称,但它仍然说“stdafx.h”。
编辑: 是的,每个源文件都没有启用它。

2
你是否忘记在源代码中添加“#include "stdafx.h"”了? - Jepessen
尝试“清理”项目,然后重新构建。如果您确实删除了预编译头文件,则应该可以正常工作。否则,很可能仍然在某个地方启用了它。 - YePhIcK
5
在VS2015中,您需要关注设置对话框中所选的配置和平台,即顶部的两个组合框。它们经常出现错误,不匹配您当前的选择,因此您可能会更改错误的设置。这是一个非常糟糕的错误,我已经为它失去了至少两打头发。 - Hans Passant
1
Jeppesen,我不想使用预编译头文件。这就是为什么我关闭了它们。 - Void Chicken
谢谢,汉斯。我只在一个配置中禁用了它。 - Void Chicken
这个回答解决了你的问题吗?为什么我不能在Visual Studio中禁用预编译头文件的使用? - user74696c
5个回答

5

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

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


4

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

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

<PrecompiledHeader>Use</PrecompiledHeader>

您会发现仍然有一些属性设置为使用它。 只需将单词“Use”替换为“NotUsing”,问题就解决了。


3
您可能已经为该项目禁用了它,但每个单独的源文件都可以有自己特定的编译器设置。您也可能错误地将禁用预编译头视为项目范围设置而禁用了特定源文件的预编译头。
对于解决方案资源管理器中的每个单独的 C/C++ 文件,请右键单击它并选择“属性”。在“C/C++->预编译头”下,确保“预编译头”设置为“不使用预编译头”。
然后,在解决方案资源管理器中右键单击您的项目名称,并选择“属性”以查看项目设置是否相同。
如果有一个stdafx.cpp文件,它很可能具有“创建预编译头”设置。如果该文件没有相关代码,则通常可以删除此文件。
对于每个解决方案配置(例如Debug和Release),请重复所有相同的步骤。

对于大多数人来说,这个答案比被接受的答案更有用。 - user74696c

0
在我的情况下,我发现pch.h仍然设置在:c++ ->高级->强制包含文件中。
无论如何,安德鲁的解决方案仍然是最好的。只需在文本编辑器中打开proj.文件,然后使用ctrl-f搜索导致问题的文件名。比在vs中浏览所有属性要容易得多。

0

Microsoft Visual Studio 2015:

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

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接