Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 287
Jared Avatar asked May 07 '09 21:05

Jared


2 Answers

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

like image 104
Oliver Zendel Avatar answered Oct 10 '22 19:10

Oliver Zendel


I would suggest reinstalling VS 2008 SP1. Have you installed a different VS (e.g. VS Express) in the meantime? This is known to cause interference with an existing VS installation.

You could try checking the compiler and linker versions by running cl.exe and link.exe from the Visual Studio command prompt.

like image 34
Tobiesque Avatar answered Oct 10 '22 19:10

Tobiesque