I'm attempting to make an x64 build of a project with Visual Studio 2005. It's currently failing with linker error C1905, 'Front end and back end not compatible (must target same processor).'
From what I gather, this is essentially saying that my x64 build is attempting to link with x86 modules. Unfortunately, this project links with a lot of different libraries. I'm not sure which is the one causing the problem.
Is there any way to get more information out of Visual Studio?
First, check Configuration Manager (Build > Configuration Manager...) to ensure that you're building all of your projects for the same platform.
If that doesn't help, then from the Visual Studio Command Prompt (available from the Start menu), you can use dumpbin
to determine the architecture of your .lib and .obj files by doing the following:
C:\Foo> dumpbin /headers Foo.lib | more
Microsoft (R) COFF/PE Dumper Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file Foo.lib
File Type: LIBRARY
FILE HEADER VALUES
14C machine (x86)
3 number of sections
4C6CB9B6 time date stamp Wed Aug 18 21:57:26 2010
113 file pointer to symbol table
8 number of symbols
0 size of optional header
100 characteristics
32 bit word machine
The first line under the header values tells you which architecture the .lib/.obj was compiled for (in this case, x86).
If you have a lot of linked intermediates, you could automate this a bit by just looking for x86 (or x64) files:
for /R %f in (*.obj *.lib) do @echo %f && dumpbin /headers %f | findstr /c:"machine (x86)"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With