Использовать платформу x86 в проектах C++

Мое решение Visual Studio 2012 имеет проекты С#, проекты VB.NET, проекты C++/CLI и C++. В настоящее время у меня есть три платформы: x86, x64 и Win32. Когда я добавил x64, я заметил, что он используется всеми проектами. Я хотел бы сделать то же самое с x86, чтобы удалить Win32.

Поэтому я пошел в Configuration Manager, выбрал проект C++ и в поле со списком платформы у меня были только варианты: Win32, x64, New и Edit. Если я выбрал New, единственным доступным вариантом является ARM.

Итак, я подумал о том, чтобы просто заменить Win32 на x86 в моем.vcxproj. Не работает (по умолчанию это x64). Затем я посмотрел файл.sln, но не мог понять, как x64 удается работать для каждого проекта.

Ответы

Ответ 1

IDE отличаются слишком сильно, чтобы получить общее имя платформы для 32-битного кода. В противном случае отражение управляемого кода в корне отличается от кода C++. Имена управляемых проектных платформ могут быть только AnyCPU, x86, x64. C++ имена платформ проекта могут быть только Win32, x64 и ARM. История играет определенную роль, Win32 - с начала 1990-х, когда Windows NT представила 32-битную версию winapi. Отличается от 16-битной версии. Не было реальной возможности когда-либо изменить его, не рискуя нарушить существующие проекты.

Имя платформы x86 для управляемых проектов также не является стандартным, это была ошибка в VS2010, которую вы, кажется, унаследовали. VS2012 создает новые проекты с именем платформы AnyCPU, например, старыми версиями VS. Что довольно точно описывает истинную платформу для управляемого кода, она работает на любом из-за джиттера. В противном случае имя не имеет значения, только параметры Project + Properties, Build tab влияют на то, чтобы использовать конкретный джиттер для использования во время выполнения. Другими словами, если вы не используете x86 там, ваша программа все равно будет работать как 64-битный процесс, хотя имя платформы - x86. Это была ошибка VS2010, это вызвало много страданий.

Таким образом, вы довольно застряли в этом. Это не настоящая проблема, IDE может отлично справиться с миксами. Вы уже знаете о диалоговом окне Build + Configuration Manager, он однозначно показывает, какие платформы будут созданы при использовании Build + Build или нажмите F5.