Как скомпилировать 64-битное приложение с помощью Visual C ++ 2010 Express?

128

Есть ли простой способ скомпилировать 64-битное приложение с 32-битной версией Visual C ++ 2010 Express? Какие конфигурации необходимы?

Натан Осман
источник

Ответы:

181

Вот пошаговая инструкция:

  1. Загрузите и установите Windows Software Development Kit версии 7.1. Visual C ++ 2010 Express не включает 64-разрядный компилятор, но SDK включает. Ссылка на SDK: http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx
  2. Измените конфигурацию вашего проекта. Перейдите в Свойства вашего проекта. Вверху диалогового окна будет раскрывающееся меню «Конфигурация». Убедитесь, что выбрано «Все конфигурации». Также будет раскрывающийся список «Платформа» с надписью «Win32». Наконец, справа есть кнопка «Диспетчер конфигураций» - нажмите ее. В появившемся диалоговом окне найдите свой проект, нажмите раскрывающийся список «Платформа», выберите «Создать», затем выберите x64. Теперь измените раскрывающееся меню «Активная платформа решения» на «x64». Когда вы вернетесь в диалоговое окно «Свойства», в раскрывающемся списке «Платформа» должно появиться значение «x64».
  3. Наконец, измените свой набор инструментов. В меню «Свойства» вашего проекта в разделе «Свойства конфигурации | Общие: измените Platform Toolset с «v100» на «Windows7.1SDK».

В любом случае эти шаги сработали для меня. Некоторые дополнительные сведения о шаге 2 можно найти в ссылке от Microsoft, упомянутой на предыдущем плакате: http://msdn.microsoft.com/en-us/library/9yb4317s.aspx .

Matt
источник
2
Поздравляем - ваш ответ принес вам 275 репутации. Спасибо за отличный ответ!
Натан Осман
У меня Windows XP, но SDK предназначен для Windows 7. Будет ли это работать?
0x499602D2 02
@ 0x499602D2: Не знаю. Я надеюсь, что если бы версии Visual C ++ и SDK были одинаковыми, так и было бы. Вы пробовали?
Мэтт
2
У меня это сработало только после установки патчей 3 и 4, упомянутых здесь: stackoverflow.com/a/8334985/429873
Дмитрий Трофимов
1
@Matt: у меня все это работает на WinXP 64bit. В чем причина изменения Platform Toolset на Win7.1SDK?
IgorStack
48

64-разрядные инструменты по умолчанию недоступны в Visual C ++ Express. Чтобы включить 64-разрядные инструменты в Visual C ++ Express, установите Windows Software Development Kit (SDK) в дополнение к Visual C ++ Express. В противном случае при попытке настроить проект для 64-разрядной платформы с помощью Visual C ++ Express возникает ошибка.

Как: настроить проекты Visual C ++ для работы с 64-разрядными платформами

Ссылка: http://msdn.microsoft.com/en-us/library/9yb4317s.aspx

ТЫ
источник
это доступно для VB 2010 Express?
Ремус Риго
По какой-то причине мой $ (WindowsSdkDir), похоже, не работал правильно, но как только я добавил абсолютные пути вручную, он сработал.
rogerdpack
5
После выполнения инструкций я продолжал получать пустые страницы свойств для платформы x64. Пришлось установить здесь обновление компилятора . Дополнительная информация на KB2519277 .
Кипкеннеди
14

И убедитесь, что вы загрузили Windows7 .1 SDK, а не только Windows 7. Это вызвало у меня головокружение.

Джейми Фристром
источник
9

Я нашел важный шаг, который нужно добавить к этому - после того, как вы установили SDK, перейдите в свойства своего проекта и измените Configuration Properties-> General-> Platform Toolset с v100 или чего-то еще на Windows7.1SDK. Это меняет $ (WindowsSdkDir) на нужное место и, похоже, решает некоторые другие трудности, с которыми я столкнулся.

Matt
источник
5

Обратите внимание, что компиляторы Visual C ++ удаляются при обновлении Visual Studio 2010 Professional или Visual Studio 2010 Express до Visual Studio 2010 SP1, если установлен Windows SDK v7.1.

Инструкции по решению этой проблемы см. В статье KB2519277 на сайте поддержки Microsoft.


источник
5
Это было бы лучше использовать в качестве комментария, поскольку на самом деле он не отвечает на поставленный вопрос.
Security Hound
4

Загрузите Windows SDK и перейдите в Просмотр-> Свойства-> Диспетчер конфигурации-> Платформа активных решений-> Создать-> x64.

duduong
источник
1
какую программу запустить? Я не нашел ни одной программы с доступной
функцией
3

Программирование в 64-битной среде сильно отличается от 32-битной. Сгенерированный код имеет совершенно другую структуру сборки в 32- и 64-битном коде, даже протоколы взаимодействия с функциями меняются. Таким образом, вы не можете сгенерировать 64-битный код с помощью 32-битного компилятора.

Возможно, вы захотите увидеть статью на веб-сайте Microsoft о нацеливании на 64-битную цель, но с использованием 32-битной машины разработки.

perilbrain
источник
Ответ дан в соответствии с документацией Intel
perilbrain
Да, это правда, что любые зависимости должны быть (повторно) скомпилированы с использованием 64-битного компилятора, иначе этап связывания не удастся.
rogerdpack
2

Как сказал Якоб: windows sdk 7.1 не может быть установлен, если присутствуют среды выполнения MS VC ++ x64 и x86 и redisrtibutables версии 10.0.40219. после их удаления установка win sdk в порядке, VS C ++ SP1 можно снова установить нормально.

С уважением

Адриен Хувелле
источник