Ответ 1
Сначала проверьте Configuration Manager (Build > Configuration Manager...), чтобы убедиться, что вы строите все свои проекты для одной и той же платформы.
Если это не помогает, то из командной строки Visual Studio (доступно из меню "Пуск" ) вы можете использовать dumpbin
для определения архитектуры ваших файлов .lib и .obj, выполнив следующие действия:
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
Первая строка под значениями заголовка сообщает вам, в какой архитектуре был скомпилирован файл .lib/.obj(в данном случае x86).
Если у вас много связанных промежуточных элементов, вы можете автоматизировать это немного, просто ищем файлы x86 (или x64):
for /R %f in (*.obj *.lib) do @echo %f && dumpbin /headers %f | findstr /c:"machine (x86)"