Как скомпилировать 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 .


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 .
Кипкеннеди


9

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


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.


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

3

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

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


Ответ дан в соответствии с документацией Intel
perilbrain

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

2

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

С уважением

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.