为啥我不能在 Visual Studio 中禁用预编译头文件?

Posted

技术标签:

【中文标题】为啥我不能在 Visual Studio 中禁用预编译头文件?【英文标题】:Why can't I disable the use of precompiled headers in Visual Studio?为什么我不能在 Visual Studio 中禁用预编译头文件? 【发布时间】:2014-12-06 03:50:05 【问题描述】:

我正在尝试在 Visual Studio Express 2013 for Windows Desktop(v12.0.30723.00 Update 3)中创建一个 C++ 静态库。我不想在我的库中使用预编译的头文件。我无法让最基本的项目无错误地编译。

这个问题很容易复制如下:

    文件->新建项目 选择模板->Visual C++->CLR->类库。单击“确定”在默认位置创建 ClassLibrary1。 在Project->Properties中,进入Configuration Properties->C/C++->Precompiled Headers,将Precompiled Header选项设置为“Not Using Precompiled Headers”。 编辑文件 AssemblyInfo.cpp 和 ClassLibrary1.cpp,并注释掉每个文件顶部的#include "stdafx.h"。 在解决方案资源管理器中,右键单击 Stdafx.cpp 并选择“从项目中排除”。 重建解决方案。

我收到以下两个错误:

1   error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?   AssemblyInfo.cpp   39   1   ClassLibrary1
2   error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?   ClassLibrary1.cpp   7   1   ClassLibrary1

是我遗漏了一个步骤,还是在此版本的 Visual Studio 中发现了错误?

【问题讨论】:

我在 Visual Studio 2013 Ultimate 中尝试过此操作,但无法重现此问题。我有几个问题: 1.你确定你保存了项目文件(更改项目属性并点击“确定”不会保存vcxproj文件,你必须在点击确定后点击文件菜单中的“全部保存”)? 2. 您是否正在构建与更改预编译头设置相同的解决方案配置? 你成功了。活动配置是调试,但似乎我正在更改发布配置的属性。谢谢! 【参考方案1】:

有时您可能会花费数小时来摸索一些具有非常基本解决方案的东西。在本例中,Active 配置是 Debug,但我正在更改 Release 配置的 Precompiled Header 选项。当我更改调试配置中的选项时,瞧!没有更多错误。

【讨论】:

太棒了!感谢您为我节省了几个小时的时间,并将其减少到令人尴尬的大量分钟。 LMAO ;-) 你很幸运 :) 我已经关闭了所有配置的 PCH,问题不会消失。【参考方案2】:

如果问题不是配置,很可能是您为项目中的单个文件启用了预编译头文件。如果您有一个由 Visual Studio 创建的 stdafx.cpp 文件,则尤其会发生这种情况。在这篇文章中查看 selbie 的答案:

C++ Precompiled Header Disabled

【讨论】:

以上是关于为啥我不能在 Visual Studio 中禁用预编译头文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的配置管理器部署复选框在 Visual Studio 2017 中被禁用?

为啥大括号缩进在 Visual Studio 2015 中搞砸了?

为啥这段代码不能在 Visual Studio 2010 中编译和运行?

为啥我不能在没有安装Visual Studio的机器上运行调试版的.NET程序

Visual Studio 2010在编译c++时为啥有错误也没有下划波浪线?

为啥按值传递 string_view?为啥 Visual Studio 不能对此进行优化?