如何修复生成.pch文件丢失?

当我在Visual Studio 2008中构build我的c ++解决scheme时,它抱怨xxxxx.pch文件丢失。 有没有一个设置,我错过了预编译头文件?

这里是完整性的确切错误:

Error 1 fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory 
  1. 在解决scheme资源pipe理器中右键单击您的项目。
  2. 点击下拉菜单底部的属性。
  3. 在Properties页面的左上angular,从下拉菜单中selectAll Configurations。
  4. 打开C / C ++树并selectPrecompiled Headers
  5. 预编译头文件:select使用(/ Yu)
  6. 填写预编译头文件字段。 标准是stdafx.h
  7. 点击确定

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

  9. 把一个名为stdafx.cpp的文件放到你的项目中。 把#include“stdafx.h”放在它的顶部,没有别的。
  10. 在解决scheme资源pipe理器中右键单击stdafx.cpp。 再次select属性和所有configuration,如步骤4 …
  11. …但这次select预编译头文件(/ YC)。 这只会绑定到一个文件stdafx.cpp。
  12. 将#include“stdafx.h”放在所有源文件的最顶端。

幸运13.横过你的手指,打build立。

预编译头(pch)的使用是一个两步过程。

在第一步,你编译一个存根文件(在VS200x中通常被称为stdafx.cpp )。 这个存根文件间接地只包含你想要预编译的头文件。 通常,一个stdafx.h (通常是stdafx.h )列出标准的标题,如<iostream><string> ,然后包含在存根文件中。 编译这将创build.pch文件。

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

在你的情况下,似乎第一步失败。 存根文件仍然存在? 在你的情况下,这可能是xxxxx.cpp 。 它必须是使用/Yc:xxxxx.pch编译的文件,因为这是编译器标志,表示它是PCH进程的第1步。 如果xxxxx.cpp存在,并且是这样一个存根文件,那么它可能会丢失它的/Yc:编译器选项。

固定:

  1. 确保你的项目中有xxxxx.cpp

  2. 使用/ Yc标志编译xxxxx.cpp创build预编译头)
    (右键单击xxxxx.cpp – >属性 – >预编译头文件 – > 创build

  3. 使用/ Yu标记编译所有其他文件使用预编译头文件)
    (右键单击项目 – >属性 – >预编译头 – > 使用

  1. 右键单击该项目并select属性菜单项
  2. 转到C / C ++ – >预编译头
  3. select不使用预编译头

是的,它可以像其他人指出的/ Yc选项一样被淘汰,但很可能你不需要触摸它来修复它。 为什么你首先得到这个错误,而不改变任何设置? 您可能已经“清理”了项目,并试图编译一个cpp文件。 在这种情况下,你会得到这个错误,因为现在缺less预编译头。 只要build立整个项目(即使不成功),并build立任何单一的CPP文件,你不会得到这个错误。

如果一切正常,但这个错误是存在的,它需要检查下一节在****。vcxproj文件:

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

在我的情况下,有一个configuration名称不正确:只有第一个字。

我知道这个话题是非常古老的,但我最近在VS2015中处理这个问题,并且帮助删除了构build文件夹并重新构build它。 这可能是由于试图closures程序或程序在build立时暂停/冻结VS而发生的。

我正在寻找具有相同问题的iOS PCH文件,如果您也喜欢我,我find的解决scheme是清除派生数据; closures模拟器,转到xCode首选项 – >位置 – >进入派生数据文件path,closuresxCode,删除派生数据文件夹中的文件,重新启动和欢呼:)

尝试构build>清洁解决scheme,然后构build>构build解决scheme。 这对我有用。