Як скласти 64-розрядну програму за допомогою Visual C ++ 2010 Express?


128

Чи є простий спосіб скласти 64-бітну програму за допомогою 32-розрядного видання Visual C ++ 2010 Express? Які конфігурації, якщо такі є, необхідні?

Відповіді:


181

Ось покрокові інструкції:

  1. Завантажте та встановіть комплект розробки програмного забезпечення Windows версії 7.1. Visual C ++ 2010 Express не включає 64-бітний компілятор, але SDK це робить. Посилання на SDK: http://msdn.microsoft.com/en-us/windowsserver/bb980924.aspx
  2. Змініть конфігурацію проекту. Перейдіть до Властивості вашого проекту. У верхній частині діалогового вікна з'явиться спадне меню "Конфігурація". Переконайтесь, що вибрано "Усі конфігурації". Буде також випадаюче меню "Платформа", на якому буде написано "Win32". Нарешті праворуч є кнопка «Менеджер конфігурацій» - натисніть її. У діалоговому вікні, що з’являється, знайдіть проект, натисніть спадне меню Платформа, виберіть команду Створити, а потім виберіть x64. Тепер змініть спадне меню «Платформа активного рішення» на «x64». Повернувшись до діалогового вікна "Властивості", у спадному меню "Платформа" тепер слід писати "x64".
  3. Нарешті, змініть набір інструментів. У меню Властивості вашого проекту в розділі Налаштування конфігурації | Загалом, змініть набір інструментів платформи з "v100" на "Windows7.1SDK".

Ці кроки спрацювали для мене, все одно. Більш детальну інформацію про крок 2 можна знайти в посиланні від Microsoft, на яке згадувався попередній плакат: http://msdn.microsoft.com/en-us/library/9yb4317s.aspx .


2
Вітаємо - ваша відповідь щойно принесла вам 275 повторів. Дякую за приголомшливу відповідь!
Натан Осман

У мене є Windows XP, але SDK призначений для Windows 7. Чи це все ще працюватиме?
0x499602D2

@ 0x499602D2: я не знаю. Я би сподівався, що якби версії Visual C ++ і SDK були однаковими, це було б. Ви пробували?
Метт

2
Це працювало для мене лише після встановлення згаданих тут патчів 3 та 4: stackoverflow.com/a/8334985/429873
Дмитро Трофімов

1
@Matt: це все працює для мене на WinXP 64bit. Яка причина змінити набір інструментів платформи на Win7.1SDK?
IgorStack

48

64-розрядні інструменти за замовчуванням недоступні у Visual C ++ Express. Щоб увімкнути 64-розрядні інструменти на Visual C ++ Express, встановіть комплект для розробки програмного забезпечення Windows (SDK) на додаток до Visual C ++ Express. В іншому випадку виникає помилка під час спроби налаштувати проект для націлювання на 64-бітну платформу за допомогою Visual C ++ Express.

Як: Налаштування Visual C ++ проектів для націлювання на 64-бітні платформи

Посилання: http://msdn.microsoft.com/en-us/library/9yb4317s.aspx


це доступно для VB 2010 Express?
Remus Rigo

Чомусь мій $ (WindowsSdkDir) не здався нормальним, але коли я вручну додав абсолютні шляхи, він працював чемпіоном.
rogerdpack

5
Дотримуючись інструкцій, я продовжував отримувати порожні сторінки властивостей для платформи x64. Мені довелося встановити тут оновлення компіляторів . Більше інформації на KB2519277 .
kipkennedy

14

І переконайтеся, що ви завантажили SDK Windows7 .1 , а не лише Windows 7. Це спричинило мені багато стукання голови.


9

Я знайшов важливий крок, який слід додати до цього - після встановлення SDK перейдіть до властивостей проекту та змініть Конфігураційні властивості-> Загальні-> Набір інструментів платформи на 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
Це було б краще подано як коментар, оскільки воно насправді не відповідає на питання.
Охоронна охорона

4

Завантажте пакет SDK для Windows і перейдіть у меню Перегляд-> Властивості-> Менеджер конфігурацій-> Платформа активного рішення-> Нове-> x64.


1
яку програму запустити? Я не знаходжу жодної програми з "Переглядом"
Stéphane Laurent

3

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

Можливо, ви захочете переглянути статтю на веб-сайті Microsoft про націлювання на 64-бітну ціль, але використання 32-бітної машини розвитку.


Надана відповідь згідно з документацією Intel
perilbrain

Так, це правда, що будь-які залежності повинні бути (повторно) скомпільовані також за допомогою 64-бітного компілятора, інакше крок посилання не вдасться.
rogerdpack

2

Як сказав Якоб: Windows sdk 7.1 не може бути встановлений, якщо в MS VC ++ x64 та x86 виконуються програми і перезаписуються версії 10.0.40219. після вилучення їх win sdk install нормально, VS C ++ SP1 можна буде встановити знову добре.

З повагою

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.