Это небольшое руководство, которое я сделал, состоит в том, чтобы сделать компиляцию VC ++ 2005 Express 64-битной с использованием последней версии PSDK (хотя я не уверен, насколько хорошо это работает)
Полагаю, у вас уже есть VC ++ 2005 Express и PSDK, и вы активировали сборку приложений Win32 в VC ++ и работали с 64-битной Windows (ну, возможно, она работает и в 32-битных окнах, но exe не будет работать в этой среде)
1) Пуск -> Все программы -> Microsoft Platform SDK для Windows Server 2003 с пакетом обновления 1 (SP1) -> 64-разрядная среда сборки Windows XP -> Настройка среды сборки Windows XP x64 (отладка / розничная торговля) <- не важно, какая из них в этот момент </p>
2) запустите VC ++ 2005 Express IDE, запустите файл VCExpress.exe с ключом / USEENV: [установочный каталог VC ++ 2005 Express] \ Common7 \ IDE \ VCExpress.exe / USEENV Это очистит все заданные по умолчанию bin / Путь к lib / include и добавьте только те, которые установлены для вас в пакетном файле «Установить Windows XP x64 Build Environment (Debug / Retail)».
3) Откройте ваше приложение или создайте новое.
4) Измените свойства приложения («Проект» -> «Свойства») и измените эти настройки на эти значения.
C / C ++ -> Общее -> Формат отладочной информации: База данных программы (/ Zi)
C / C ++ -> Генерация кода -> Базовые проверки времени выполнения: по умолчанию
Linker -> Advanced -> Target Machine: не установлено
Линкер -> Командная строка -> Дополнительные параметры: / MACHINE: AMD64
теперь он должен быть в состоянии скомпилировать для 64-битной (я думаю, я ничего не забыл)
хотя я получил эту ошибку:
ошибка PRJ0002: результат ошибки 128 возвращается из C: \ Program Files \ Microsoft Platform SDK \ Bin \ mt.exe '.
, но решил ее, скопировав mt.exe, поставляемый с установкой VC ++ 2005 Express, в каталог PSDK / Bin, перезаписав PSDK / bin / mt.exe.
Еще одна вещь, которую я почти забыл. Вы можете получить эту ошибку, описанную здесь: http://support.microsoft.com/?id=894573 добавление bufferoverflowU.lib в проект решит эту проблему.
Примечание:
Я ничего не тестировал, но скомпилировал простое приложение для Windows и консольное приложение, и TaskManager не говорит * 32 после процесса, как это было бы, если бы он был 32-битным. Я не знаю, работает ли он с более крупными проектами или чем-то еще, потому что я работал 10 минут назад:)
Но у меня есть вопрос о моих недавно созданных 64-битных приложениях (просто простое окно "hello world", созданное встроенным мастером), как я могу быть уверен, что оно действительно 64-битное? Менеджер задач говорит, что это потому, что у него нет * 32, но достаточно ли этого доказательства?
EDIT:
вам может понадобиться скопировать msvcrtd.dll & msvcp60d.dll из PSDK \ NoRedist \ Win64 \ AMD \ туда, куда они входят (не знаю точно). Я поместил их в Windows \ System32
информация взята с http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/d0770dde-56e5-4a28-acb0-30908c0f7ebd
Читайте также:
http://www.codeproject.com/KB/system/64BitOSAndPortingIssues.aspx