C++ – Error C1047: Object file created with an older compiler than other objects


I have a project that I'm building in C++ in Release mode in Visual Studio 2008 SP1 on Windows 7 and when I build it I keep getting:

fatal error C1047: The object or
library file '.\Release\foobar.obj'
was created with an older compiler
than other objects; rebuild old
objects and libraries.

The error occurs while linking.

I've tried deleting the specific object file and rebuilding but that doesn't fix it. I've also tried blowing away the whole release build folder and rebuilding but that also didn't fix it. Any ideas?

Best Answer

I had this problem but my solution differs:

For me the culprit was that an included external library was compiled with

/GL (=Enable link-time code generation under
      C/C++/ Optimization / Whole Program Optimization) 

using an older visual studio (2005). I rebuild said library in 2005 without /GL and the linker error disappeared in 2008. As MSDN states it has to do with the /LTCG setting, this is set automatically by the /GL flag: http://msdn.microsoft.com/en-us/library/ms173554%28v=vs.80%29.aspx