(SOLVED) make single executable file in vs2008 (MFC)
-
hi, i have developed program using MFC in vs2008 and now trying to build single executable file (.exe file) so that it can be used on other PCs. my source file contains both .c and .cpp files. i have tried to compile/build the program in Release mode but getting errors like:
fatal error C1853: 'Release\readtxtfile.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
so i changed the properties of precompiled header from Use Precompiled Header (/Yu) to Create Precompiled Header (/Yc) and now i'm getting errors like:
error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file
can anyone help me in this regard. i.e how to make executable file with source file containing both .c and .cpp files. Regards Jawad
-
hi, i have developed program using MFC in vs2008 and now trying to build single executable file (.exe file) so that it can be used on other PCs. my source file contains both .c and .cpp files. i have tried to compile/build the program in Release mode but getting errors like:
fatal error C1853: 'Release\readtxtfile.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
so i changed the properties of precompiled header from Use Precompiled Header (/Yu) to Create Precompiled Header (/Yc) and now i'm getting errors like:
error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file
can anyone help me in this regard. i.e how to make executable file with source file containing both .c and .cpp files. Regards Jawad
This precompiled header setting isn't a per-project setting. Set it to "Use Precompiled Header" in the project and inherit this setting in all your .c and .cpp files. After this open the properties windows individually for your stdafx.cpp file and set its precompiled header setting to "Create Precompiled Header". The next step is to select all .c files and open the properties window for them and set the precompiled header setting to "Not Using Precompiled Header". Make sure that you don't include stdafx.h in your .c source files.
-
hi, i have developed program using MFC in vs2008 and now trying to build single executable file (.exe file) so that it can be used on other PCs. my source file contains both .c and .cpp files. i have tried to compile/build the program in Release mode but getting errors like:
fatal error C1853: 'Release\readtxtfile.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
so i changed the properties of precompiled header from Use Precompiled Header (/Yu) to Create Precompiled Header (/Yc) and now i'm getting errors like:
error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file
can anyone help me in this regard. i.e how to make executable file with source file containing both .c and .cpp files. Regards Jawad
Delete the .pch file, it's not a source file.
Steve
-
hi, i have developed program using MFC in vs2008 and now trying to build single executable file (.exe file) so that it can be used on other PCs. my source file contains both .c and .cpp files. i have tried to compile/build the program in Release mode but getting errors like:
fatal error C1853: 'Release\readtxtfile.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
so i changed the properties of precompiled header from Use Precompiled Header (/Yu) to Create Precompiled Header (/Yc) and now i'm getting errors like:
error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file
can anyone help me in this regard. i.e how to make executable file with source file containing both .c and .cpp files. Regards Jawad
-
If all source files are in a single project then change the
.c
files to.cpp
and try building again.One of these days I'm going to think of a really clever signature.
Legacy source might not compile that way and its constant hassle to upgrade some 3rd parties that come in .c files.
-
Legacy source might not compile that way and its constant hassle to upgrade some 3rd parties that come in .c files.
-
This precompiled header setting isn't a per-project setting. Set it to "Use Precompiled Header" in the project and inherit this setting in all your .c and .cpp files. After this open the properties windows individually for your stdafx.cpp file and set its precompiled header setting to "Create Precompiled Header". The next step is to select all .c files and open the properties window for them and set the precompiled header setting to "Not Using Precompiled Header". Make sure that you don't include stdafx.h in your .c source files.
thank you pasztorpisti for your reply. i configured my project to release mode from Configuration Manager and did what you earlier suggested. it builds without errors but when i run exe file, one of the serial ports does not open and gives error 0x7B (system error code). it runs fine (both serial ports open) when build in debug mode. any idea what is happening? Regards Jawad
-
thank you pasztorpisti for your reply. i configured my project to release mode from Configuration Manager and did what you earlier suggested. it builds without errors but when i run exe file, one of the serial ports does not open and gives error 0x7B (system error code). it runs fine (both serial ports open) when build in debug mode. any idea what is happening? Regards Jawad
That's a bug in your code or one of the libraries you use. :-)
-
That's a bug in your code or one of the libraries you use. :-)
sorry, i didn't understand. what kind of bug we are talking about? i didn't understand the reason behind this. can you please tell me why this behavior is happening (i.e running fine in debug mode but in release mode, opens one port and not the other)? Regards Jawad
-
sorry, i didn't understand. what kind of bug we are talking about? i didn't understand the reason behind this. can you please tell me why this behavior is happening (i.e running fine in debug mode but in release mode, opens one port and not the other)? Regards Jawad
There are many reasons for a buggy program to behave differently in debug/release mode. For example code optimization can sometimes screw up your code even if its otherwise non-buggy. Fortunately visual C++ is quite safe in this regard so I wouldnt search for something like this. The most dangerous difference between release builds is memory management/allocation. Debug builds use special values to fill up your stack/heap memory areas when they are allocated to detect programming mistakes (like when you try to use uninitialized variables). This fill doesn't happen when you run your program in release mode resulting in different behavior. Another problem is that even if your build is in Release mode the allocated memory is filled with zeros (not the same value as in debug builds) if you start your executable from your ide by debugging it! For this reason sometimes the bug occurs only if you start the exe from outside your IDE and then attach to it with your debugger. I would search for some uninitialized variables/members...
-
There are many reasons for a buggy program to behave differently in debug/release mode. For example code optimization can sometimes screw up your code even if its otherwise non-buggy. Fortunately visual C++ is quite safe in this regard so I wouldnt search for something like this. The most dangerous difference between release builds is memory management/allocation. Debug builds use special values to fill up your stack/heap memory areas when they are allocated to detect programming mistakes (like when you try to use uninitialized variables). This fill doesn't happen when you run your program in release mode resulting in different behavior. Another problem is that even if your build is in Release mode the allocated memory is filled with zeros (not the same value as in debug builds) if you start your executable from your ide by debugging it! For this reason sometimes the bug occurs only if you start the exe from outside your IDE and then attach to it with your debugger. I would search for some uninitialized variables/members...
thak you so much pasztorpisti. that was really helpful :-) Regards Jawad
-
hi, i have developed program using MFC in vs2008 and now trying to build single executable file (.exe file) so that it can be used on other PCs. my source file contains both .c and .cpp files. i have tried to compile/build the program in Release mode but getting errors like:
fatal error C1853: 'Release\readtxtfile.pch' precompiled header file is from a previous version of the compiler, or the precompiled header is C++ and you are using it from C (or vice versa)
so i changed the properties of precompiled header from Use Precompiled Header (/Yu) to Create Precompiled Header (/Yc) and now i'm getting errors like:
error C2857: '#include' statement specified with the /Ycstdafx.h command-line option was not found in the source file
can anyone help me in this regard. i.e how to make executable file with source file containing both .c and .cpp files. Regards Jawad
Hi i need to show the C++ program in a release version could you help me, how to create an executable file for that. Please let me know if any one could help me. I was trying to make it but few unknow exceptions i couldn’t solve. my id: ksandeepvarma1@gmail.com