如何修复.pch 文件在构建时丢失?

当我在 Visual Studio 中构建 c + + 解决方案时,它会抱怨 xxxx.pch 文件丢失了。我是否缺少一个设置来获取预编译的标题?

以下是完整性的精确错误:

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
180419 次浏览

使用预编译头是一个分两步的过程。

第一步,编译一个存根文件(在 VS200x 中通常称为 stdafx.cpp)。新版本使用 pch.cpp。).此存根文件只间接包含要预编译的头文件。通常,一个小头(通常是 stdafx.hpch.hpp)列出标准头,如 <iostream><string>,然后将其包含在存根文件中。对此进行编译将创建。Pch 文件。

在步骤2中,实际的源代码包含步骤1中与第一个标题相同的小标题。编译器遇到这个特殊标头时,读取对应的。而不是 pch 文件。这意味着它不必每次都(重新)编译那些标准头文件。

在您的情况下,第一步似乎失败了。存根文件还在吗?在您的情况下,这可能是 xxxxx.cpp。它必须是用 /Yc:xxxxx.pch编译的文件,因为这是编译器标志,表明它是 PCH 进程的步骤1。如果 xxxxx.cpp存在,并且是这样一个存根文件,那么它可能缺少其 /Yc:编译器选项。

  1. 右键单击该项目并选择属性菜单项
  2. Goto C/C + +-> 预编译头文件
  3. 选择“不使用预编译头”

注意: IDE 的后续版本可能在相关文件的默认名称中使用“ pch”而不是“ stdafx”。在下面的说明中,可能需要用 pch 代替 stdafx。我道歉。这不是我的错。

  1. 在解决方案资源管理器中右键单击项目。
  2. 单击下拉菜单底部的“属性”。
  3. 在属性页的左上角, 从下拉菜单中选择“所有配置”。
  4. 打开 C/C + + 树并选择预编译头文件
  5. 预编译头: 选择使用(/Yu)
  6. 填写预编译头文件字段标准是 stdafx.h
  7. 点击 OK

  8. 如果你的头文件中没有 stdafx.h,把它放在那里。编辑 它将 # 包含所有需要预编译的头

  9. 将一个名为 stdafx.cpp 的文件放入项目中,并将 # include“ stdafx.h” 在它的顶端,没有别的。
  10. 在解决方案资源管理器中右键单击 stdafx.cpp,选择 Properties 和所有配置再次在步骤4..。
  11. 但是这次选择预编译头 绑定到一个文件 stdafx.cpp。
  12. 将 # include“ stdafx.h”放在所有源文件的顶部。

幸运13点,交叉手指点击生成。

解决方案:

  1. 确保项目中有 xxxxx.cpp

  2. 编译带/Yc 标志的 Xxxx.cpp(创造预编译头)
    (右键单击 xxxxx.cpp-> properties-> Precoding Header-> 创造)

  3. 编制带有/Yu 标志的 所有其他文件(使用预编译头)
    (右键单击 project-> properties-> Precoding Header-> 使用)

是的,它可以消除/Yc 选项,如其他人指出,但最有可能的是,您不需要触摸它来修复它。为什么您一开始没有更改任何设置就得到了这个错误?您可能已经“清理”了项目,然后尝试编译单个 cpp 文件。在这种情况下,您会得到这个错误,因为现在缺少预编译器标头。只要构建整个项目(即使不成功) ,然后构建任何单个 cpp 文件,就不会出现这个错误。

尝试构建 > 清理解决方案,然后构建 > 构建解决方案。

如果一切正常,但出现这个错误,则需要检查 * * * . vcxproj 文件中的下一节:

<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition=

在我的例子中,有一个不正确的配置名称: 只有第一个单词。

我知道这个话题很老了,但是我最近在 VS2015中处理这个问题,帮助是删除构建文件夹并重新构建它。这可能是由于在构建时试图关闭程序或程序中止/冻结 VS 造成的。

我在搜索 iOS PCH 文件时也遇到了同样的问题,如果你也像我一样来到这里,我找到的解决方案是清除派生数据; 关闭模拟器,进入 xCode prefs-> location-> 进入派生数据文件路径,关闭 xCode,删除派生数据文件夹中的文件,重新启动并欢呼:)

如果您在服务器构建(AppCenter)中遇到这种情况,并且您正在使用 CocoaPods,那么请确保您的 Podfile 已经签入。

AppCenter 只有在找到一个 Pofile 并且没有找到文件上的 PODS 文件夹时才运行“ pod install”命令。

我已经签入了文件夹,但是因为 git 会自动忽略。Pch 文件(检查。吉蒂诺尔证实这一点) ,我的。Pch 没有被登记入住。

我通过强制执行。Pch 文件来检查它,但是删除 PODS 文件夹也可以,因为在这种情况下 Appcenter 将运行 pod install 命令。

希望这能帮到什么人。

VS 搞砸了(我的是2019年; ()。 继续选择“不使用预编译头”,因为其他家伙指出,然后打开项目文件(vcxproj)与任何文本编辑器,并删除概述的两个条目在两个地方。好好收拾残局吧! 事实上,在下面的 vcxproj 文件中的‘ pch.h’条目,您可以在 VS properties 的接口中找到它。

snapshot from nnn.vcxproj file

我设法为自己创建了这个问题,因为我想使用来自不同目录的 pch.h 和 pch.cpp 文件。因此,我从项目中删除了这两个文件,然后将它们作为其他地方的现有文件添加进来。最大的错误就是找不到预编译头文件。

我无法从 VisualStudio2019UI 中找到修复该问题的方法。您必须编辑项目文件,并确保以下内容如下所示:

 <ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
</ClCompile>

我也遇到过同样的问题,我设法用这种方式解决了它:

错误:

fatal error C1083: Cannot open precompiled header file : "Debug\myProj.pch". No such file or directory

第一个是我出错的时候,

然后像改第二部电影一样改了它

  • 制造(/Yx)

  • 我的项目 enter image description here