当我在Visual Studio中构建我的c ++解决方案时,它会抱怨缺少xxxxx.pch文件。是否有一个我缺少的设置来获得预编译的标题?
这是完整性的确切错误:
Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
答案 0 :(得分:374)
注意:更高版本的IDE可能会在相关文件的默认名称中使用“pch”而不是“stdafx”。可能有必要在下面的说明中将pch替换为stdafx。我道歉。这不是我的错。
点击“确定”
如果您的Header Files中没有stdafx.h,请将其放在那里。编辑 它#include你想要预编译的所有标题。
幸运13.用手指按住Build。
答案 1 :(得分:57)
预编译标题(pch)的使用分为两个步骤。
在第一步中,编译存根文件(在VS200x中,它通常称为stdafx.cpp
)。此存根文件间接仅包含您要预编译的标头。通常,一个小标头(通常为stdafx.h
)列出标准标头,例如<iostream>
和<string>
,然后将其包含在存根文件中。编译它会创建.pch文件。
在第2步中,您的实际源代码包含与第一个标头相同的步骤1中的小标题。编译器在遇到此特殊标头时会读取相应的.pch文件。这意味着它不必每次都(重新)编译这些标准头文件。
在您的情况下,似乎第1步失败了。存根文件是否仍然存在?在您的情况下,那可能是xxxxx.cpp
。它必须是使用/Yc:xxxxx.pch
编译的文件,因为这是编译器标志,表示它是PCH过程的第1步。如果xxxxx.cpp
存在,并且是这样的存根文件,那么它可能缺少其/Yc:
编译器选项。
答案 2 :(得分:20)
修正:
确保您的项目中有xxxxx.cpp
使用/ Yc标志编译 xxxxx.cpp (创建预编译标题)
(右键单击xxxxx.cpp - &gt;属性 - &gt;预编译标题 - &gt; 创建)
使用/ Yu标志编译所有其他文件(使用预编译标题)
(右键单击项目 - &gt;属性 - &gt;预编译标题 - &gt; 使用)
答案 3 :(得分:7)
答案 4 :(得分:2)
是的,可以像其他人指出的那样使用/ Yc选项消除它,但很可能你不需要触摸它来修复它。为什么在不更改任何设置的情况下首先收到此错误?您可能已经“清理”了项目,而不是尝试编译单个cpp文件。在这种情况下,您会收到此错误,因为现在缺少预编译器标头。只需构建整个项目(即使不成功),然后构建任何单个cpp文件,您将不会收到此错误。
答案 5 :(得分:2)
如果在服务器内部版本(AppCenter)上发生这种情况,并且您使用CocoaPods确保您的Podfile已签入。
AppCenter仅在找到Pofile并且在文件上找不到PODS文件夹时,才运行“ pod install”命令。
我已经签入了文件夹,但是因为git自动忽略了.pch文件(请检查.gitignore来解决这个问题),所以我的.pch没有被签入。
我通过强制.pch文件进行检查对问题进行了排序,但是删除PODS文件夹也应该起作用,因为在这种情况下Appcenter会运行pod install命令。
希望这对某人有帮助。
答案 6 :(得分:0)
如果一切正常,但是这个错误存在,则需要检查****中的下一部分.vcxproj文件:
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition=
在我的情况下,配置的名称不正确:只有第一个单词。
答案 7 :(得分:0)
我知道这个主题已经很老了,但我最近在VS2015中处理了这个问题,并且有助于删除构建文件夹并重新构建它。这可能是由于尝试关闭程序或程序在构建时暂停/冻结VS而发生的。
答案 8 :(得分:0)
我正在搜索具有相同问题的iOS PCH文件,如果你也像我这样,我发现的解决方案是清除派生数据;关闭模拟器,转到xCode prefs - &gt;位置 - &gt;转到派生数据文件路径,关闭xCode,删除派生数据文件夹中的文件,重新启动并加油:)
答案 9 :(得分:0)
VS 搞砸了(我的是 2019 年;()。 继续并选择“不使用预编译头文件”,因为其他人指出,然后使用任何文本编辑器打开项目文件(vcxproj),并在两个地方删除概述的两个条目。享受清理烂摊子的乐趣! 事实上,你在下面看到的 vcxproj 文件中的“pch.h”条目,你永远会在 VS 属性的界面中找到它。
答案 10 :(得分:-1)
尝试构建&gt;清洁解决方案,然后构建&gt;构建解决方案This适合我。