如何修复构建中缺少的.pch文件?

Sam*_*ill 152 c++ precompiled-headers pch visual-studio

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

这是完整性的确切错误:

Error   1   fatal error C1083: Cannot open precompiled header file: 'Debug\xxxxx.pch': No such file or directory
Run Code Online (Sandbox Code Playgroud)

Jiv*_*son 408

注意:IDE的更高版本可能在相关文件的默认名称中使用"pch"而不是"stdafx".可能有必要在下面的说明中将pch替换为stdafx.我道歉.这不是我的错.

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

  8. 如果你的Header Files中没有stdafx.h就把它放在那里.编辑它以#include您想要预编译的所有标头.

  9. 将名为stdafx.cpp的文件放入项目中.把#include"stdafx.h"放在它的顶部,没有别的.
  10. 在解决方案资源管理器中右键单击stdafx.cpp.再次选择属性和所有配置,如步骤4 ...
  11. ...但这次选择Precompiled Header Create(/ Yc).这只会绑定到一个文件stdafx.cpp.
  12. 将#include"stdafx.h"放在所有源文件的最顶层.

幸运13.交叉你的手指击中Build.

  • 我不知道stdafx.cpp应该有不同的设置.很好的答案. (55认同)
  • 这应该是接受的答案,因为另一个缺少步骤10和11.谢谢! (4认同)
  • 我的英雄.谢谢. (3认同)
  • 这是比我更基本的答案。要使PCH正常工作,必须执行步骤1-7,但是问题中的错误消息表明这些步骤已经完成。OTOH,它假设一个单一的stdafx.pch文件,而问题中的xxxxx.pch则暗示了一个更复杂的问题(多PCH设置)。 (2认同)

MSa*_*ers 58

预编译标头(pch)的使用分为两步.

在第一步中,您编译一个存根文件(在VS200x中,它通常被称为stdafx.cpp).此存根文件间接仅包含您要预编译的标头.通常,一个小标题(通常stdafx.h)列出标准标题,例如<iostream><string>,然后将其包含在存根文件中.编译它会创建.pch文件.

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

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

  • **那么它可能缺少它的/ Yc:编译器选项.**顺便说一下,该选项位于Project Property Pages/Configuration Properties/C-C++/Precompiled Headers中 (13认同)

fra*_*ike 20

固定:

  1. 确保项目中有xxxxx.cpp

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

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


小智 6

  1. 右键单击项目并选择属性菜单项
  2. 转到C/C++ - >预编译的标题
  3. 选择不使用预编译标题

  • **4.选择`Create(/ Yc)`**(恢复然后再次使用) (3认同)