Click here to Skip to main content
14,880,336 members
Articles / Programming Languages / C++
Tip/Trick
Posted 13 Feb 2010

Tagged as

Stats

38.2K views
2 bookmarked

*.pch file missing!

Rate me:
Please Sign up or sign in to vote.
1.00/5 (1 vote)
15 Feb 2010CPOL
Sometimes, Visual c++ users see a pretty confusing error message when they compile or build their projects. the error message says :fatal error C1083: Cannot open precompiled header file: 'filename.pch': No such file or directorymy solution was :In VS, go to Project->Options, set the...
Sometimes, Visual c++ users see a pretty confusing error message when they compile or build their projects. the error message says :

MSIL
fatal error C1083: Cannot open precompiled header file: 'filename.pch': No such file or directory


my solution was :

MSIL
In VS, go to Project->Options, set the Configuration Combobox in top to 'All Configurations', and then from left pan, choose 'C/C++->Precompiled Haeders' and set 'Create/Use Precompiled headers' option to value : 'Create Precompiled headers (/Yc)'.


which turned out not to be an accurate solution (Read the Messages below).

well, here is the solution :


1) Right click on the PROJECT (in Solution Explorer) | Properties | C/C++ | Pre-compiled Headers... here you set to ** /Yu **
2) Right click on STDAFX.CPP (in Solution Explorer) | Properties | C/C++ | Pre-compiled Headers... here you set to ** /Yc **

its done.

all credits for this tip goes to :SledgeHammer01

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

The Zetta
Iran (Islamic Republic of) Iran (Islamic Republic of)
No Biography provided

Comments and Discussions

 
QuestionWorked For Me! Thank You !!!!!!!!!!!!!!!!!+! Pin
Member 912601929-Mar-17 14:26
MemberMember 912601929-Mar-17 14:26 
GeneralMy vote of 1 Pin
SledgeHammer0114-Feb-10 8:06
MemberSledgeHammer0114-Feb-10 8:06 
GeneralRe: My vote of 1 [modified] Pin
The Zetta14-Feb-10 9:39
MemberThe Zetta14-Feb-10 9:39 
GeneralRe: My vote of 1 Pin
SledgeHammer0114-Feb-10 10:57
MemberSledgeHammer0114-Feb-10 10:57 
No, there are just TWO options: /Yc and /Yu. Thats it. If you do not specify either, you do not use pre-compiled headers. Period.

/Yc is to CREATE the pre-compiled header
/Yu is to USE the pre-compiled header

You can set the pre-compiled header option globally for all C++ files, but you can override each individual C++ file as well.

Project | Options | Pre-compiled headers is the GLOBAL one that covers ALL C++ files in the project and should be set to /Yu "Use Pre-Compiled Header".

THEN, you need to go and manually override the setting for stdafx.cpp and change it to /Yc "Create Pre-Compiled Header".

That way, compiling stdafx.cpp will generate the PCH whenever it needs to. None of the other C++ files should generate the PCH.

If you get an error about the PCH missing, that indicates you screwed up your settings.

When your project is set up correctly as indicated above, you can delete the PCH and it will be regenerated when the stdafx.cpp is compiled.

If you set /Yc on every file, your compile will be very, very, very, very, very, very slow.

If you set /Yc on more then one file, you are defeating the purpose of PCH.

You should never have to touch the settings after you set them correctly.
GeneralRe: My vote of 1 Pin
The Zetta14-Feb-10 21:24
MemberThe Zetta14-Feb-10 21:24 
GeneralRe: My vote of 1 Pin
SledgeHammer0115-Feb-10 7:13
MemberSledgeHammer0115-Feb-10 7:13 
GeneralRe: My vote of 1 Pin
The Zetta15-Feb-10 8:34
MemberThe Zetta15-Feb-10 8:34 
GeneralRe: My vote of 1 Pin
SledgeHammer0115-Feb-10 8:40
MemberSledgeHammer0115-Feb-10 8:40 
GeneralRe: My vote of 1 Pin
The Zetta15-Feb-10 21:31
MemberThe Zetta15-Feb-10 21:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.