Для смены архитектуры нужно явно указать IDE, что нужно собирать проект под 64-битную/разрядную систему. Для этого в каждом проекте решения надо изменить всего 2 опции, или просто проконтролировать их правильное изменение, т.к. они могут меняться автоматически как полностью, так и частично.
- Параметр Конечный компьютер. В обозревателе решений выбрать нужный проект → Главное меню → Проект → Свойства (этот пункт также можно было выбрать в контекстном меню проекта) → Свойства конфигурации → Библиотекарь (или Компоновщик) → Общие (также можно выбрать Все параметры) → Конечный компьютер → из выпадающего списка выбрать значение "MachineX64 (/MACHINE:X64)" вместо "MachineX86 (/MACHINE:X86)" или какой там был выбран до этого.
- Опция Дополнительные параметры может меняться двумя способами:
- В обозревателе решений выбрать нужный проект → Главное меню → Проект → Свойства (этот пункт также можно было выбрать в контекстном меню проекта) → Свойства конфигурации → Библиотекарь (или Компоновщик) → Все параметры → Дополнительные параметры → вписать короткое значение "x64" или полное/длинное "/machine:X64" или "MachineX64" вместо "/machine:X86", или выбрать (или вписать) любой из макросов, содержащих данное значение —
$(Platform)
,$(Platform_Actual)
,$(PlatformName)
,$(PlatformShortName)
,$(PlatformTarget)
,$(PlatformTargetAsMSBuildArchitecture)
,$(TargetMachine)
и пр. - В обозревателе решений выбрать нужный проект → Главное меню → Проект → Свойства (этот пункт также можно было выбрать в контекстном меню проекта) → Свойства конфигурации → Библиотекарь (или Компоновщик) → Командная строка → поле Дополнительные параметры → вписать значение "/machine:X64" вместо "/machine:X86" или какой там был выбран. Вместе с переменной доп. опций всё значение будет следующим: "%(AdditionalOptions) /machine:X64".
- В обозревателе решений выбрать нужный проект → Главное меню → Проект → Свойства (этот пункт также можно было выбрать в контекстном меню проекта) → Свойства конфигурации → Библиотекарь (или Компоновщик) → Все параметры → Дополнительные параметры → вписать короткое значение "x64" или полное/длинное "/machine:X64" или "MachineX64" вместо "/machine:X86", или выбрать (или вписать) любой из макросов, содержащих данное значение —
Больше ничего трогать не надо. Напр., не надо удалять параметр "WIN32" в опции "Определения препроцессора".
Неточности
Часто путают значения "/machine:X64" и "/platform:x64". Это грубая ошибка! Вместо значения "/machine:X64" нельзя использовать значение "/platform:x64"! Это разные вещи! Иначе во время сборки появится предупреждение: «warning LNK4044: нераспознанный параметр "/platform:x64" игнорируется», т.е. неизвестное значение будет игнорировано, а нужное не учтено. Из-за этого сборка успешно не завершится т.к. целевые платформы проекта (x86 и x64) будут не совпадать.
Выходной каталог сборки
Следите за изменением выходного каталога сборки. Если он не изменится, то файлы разных архитектур могут перемешаться, либо придётся постоянно чистить решение при смене архитектуры и типа компиляции (релиз, дебаг). Однако, даже если пути изменились, на новой архитектуре выходные каталоги сборки могут быть заданы не так, как ожидалось, и тогда зависимые проекты не смогут отыскать эти файлы.
Чтобы избежать путаницы для проектов в путь сборки по-умолчанию включаются платформа и среда выполнения. В случаях библиотек к названиям выходных файлов обычно также добавляется и префикс среды выполнения, если это не релиз версия.
Для каждого проекта решения выходной каталог сборки настраивается тут: Проект → Свойства → Свойства конфигурации → Библиотекарь (или Компоновщик) → Общие → Выходной файл. Но там обычно всё значение состоит из макросов, и выглядит примерно так: «$(OutDir)$(TargetName)$(TargetExt)», что не очень понятно, т.к. нужно проверять значение каждого макроса. Поэтому куда легче посмотреть уже переведённое в реальный путь значение этого параметра в аргументе OUT
, и выглядит оно примерно так: «/OUT:"D:\path\prog_name\x64\Debug\foo.lib" /MACHINE:X64».
Зависимости
Для компилируемых x64 исполняемых файлов надо обязательно указывать библиотеки также x64 разрядности.