Я хочу построить библиотеку (poco-1.3.6p2-all, для чего она стоит) для x86. Я просто установил новую (чистую) 64-разрядную машину Windows 7 и установил Visual Studio 2008 Standard. Ничего, установленного до сих пор в этом окне, не было.Создание x86 кода в среде x64 (Visual Studio 2008)?
Такая же библиотека построена безупречно на 32-битной системе Windows XP с установленным стандартом VS 2008. О, да, это все неуправляемый C++.
Ошибка, которую я получаю, связана с каждой ссылкой отдельных DLL в проекте. Пример:
1>.\obj\debug_shared\CppUnitException1.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'
В библиотеке вопрос построен из файла .vcproj вызывается из CMD-файл сценария сборки.
опции компилятора (командная строка) выглядит следующим образом:
/Od /I "include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "CppUnit_EXPORTS" /D "_CRT_SECURE_NO_DEPRECATE" /D "_VC80_UPGRADE=0x0710" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /GF /FD /EHsc /RTC1 /MDd /Fo".\obj\debug_shared/" /Fd".\obj\debug_shared/vc80.pdb" /W3 /nologo /c /ZI /errorReport:prompt
командной строки линкера в настройках проекта выглядит следующим образом:
/OUT:"..\bin\CppUnitd.dll" /INCREMENTAL /NOLOGO /DLL /MANIFEST /MANIFESTFILE:".\obj\debug_shared\CppUnitd.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"..\bin\CppUnitd.pdb" /DYNAMICBASE /NXCOMPAT /IMPLIB:"..\lib\CppUnitd.lib" /MACHINE:X86 /ERRORREPORT:PROMPT
Оказывается (для меня), что компоновщик видит x86 объектных файлов, но вызывается в режиме x64, даже если опция командной строки верна.
Мне нужна цель, чтобы быть 32-разрядным/x86-типом, а не x64.
Есть ли опция Visual Studio, которая исправит это?
Где? Я не вижу никаких вкладок или любого раздела, называемого Build. В свойствах | Линкер | Дополнительные параметры, Target Machine установлены на MachineX86. –
Вероятно, разные свойства для C++-решений, чем C#. Какие другие доступны? –
Для параметров компоновщика это единственный вариант, который выглядит связанным. –