(C++) Cannot create pre-compiled header: initialized data in header
February 24, 2017 · View on GitHub
(C++) Cannot create pre-compiled header: initialized data in header
If you get this compile warning, compiling will be significantly slowed down. Luckily, the problem is easy to solve.
There are many ways to get this warning. Below I'll show how to cause one and how to solve all.
Full warning message
[C++ Warning] locale(150): W8058 Cannot create pre-compiled header: initialized data in header
Cause
#include <boost/lexical_cast.hpp> #pragma hdrstop
Which takes you to the following line in 'include/stlport/locale':
#ifndef __LOCALE_INITIALIZED #define __LOCALE_INITIALIZED // Global initializer object, to ensure initialization of locale subsystem. #ifndef __BORLANDC static #else extern _STLP_DECLSPEC #endif ios_base::_Loc_init _LocInit; //This line #endif
IDE: C++ Builder 6.0
Compiler: Borland BCC32.EXE version 6.0.10.157
Project type: VCL
Boost version: 1.35.0
Solution
Put the #include of the header that causes this behind the #pragma:
#pragma hdrstop #include <boost/lexical_cast.hpp>