портирование с 32 бит на 64 бит - PullRequest
3 голосов
/ 20 января 2010

У меня есть сборка приложений Windows с использованием Visual C ++.Его сборка и запуск на 32-битных Windows Env.Теперь мне нужно убедиться, что он работает в Windows Vista / 7 64-битной среде.Что все, что мне нужно учитывать для этого процесса портирования ??

Ответы [ 4 ]

7 голосов
/ 20 января 2010

Это не портирование с 32-битного на 64-й, а просто запуск 32-битного кода на 64-битной машине, чтобы убедиться, что он по-прежнему работает.

Способ сделать это - просто протестировать всю функциональность на 64-бит машина, как вы делаете каждый раз, когда выпускаете новую версию, верно?: -)

Если вы действительно хотите перенести его (т.е. скомпилировать в 64-битный исполняемый файл), первым делом просто попробуйте.Вы можете найти, что это работает как есть.Я буду беспокоиться только о портировании проблем, если вы попробуете, и тогда появятся проблемы.

Тогда, и только тогда, я пойду искать причины.В противном случае это может быть потрачено впустую.

1 голос
/ 31 марта 2011

Перед сборкой проект выполняется в режиме x64.

  1. Включите все необходимые 64-битные библиотеки DLL, необходимые для вашего проекта
  2. Включите файлы библиотеки в компоновщик - дополнительные зависимости - свойства конфигурации.
  3. Добавить необходимые препроцессоры в C \ C ++ - препроцессоры - свойства конфигурации.
  4. Включить 64-битные предупреждения - При компиляции компилятор показывает предупреждения

Ex

  1. Преобразование типа данных из int в size_t возможна потеря данных
  2. Сохранение адреса указателя
  3. Магический номер.

см. Нижессылка для получения дополнительной информации об ошибках и предупреждениях при портировании http://www.viva64.com/en/a/0065/

1 голос
/ 20 января 2010

Руководство по портированию: http://msdn.microsoft.com/en-us/library/aa384190(VS.85).aspx

0 голосов
/ 20 января 2010

Стоит обратить внимание на то, храните ли вы простые старые данные (POD) в файлах или передаете данные POD в другие приложения через IPC или сокеты и т. Д. У нас также был код, который предполагал длину в 4 байта, а также указатели на 4 байта. Излишне говорить, что мы удалили эти анахронизмы.

Компиляторы, как правило, хорошо распознают другие виды ошибок, то есть, вплоть до преобразований типа int и т. Д. Так что, как правило, это всего лишь случай учета предупреждений компиляторов и соответствующего изменения кода.

...