Семь шагов переноса программы в 64-битную систему - Инструментарий

ОГЛАВЛЕНИЕ

3. Инструментарий

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

Отсутствие 64-битного компилятора является простейшей, но самой непреодолимой проблемой. Статья пишется в 2009, когда по-прежнему нет 64-битного компилятора C++ Builder от Codegear. Его выпуск ожидается к концу текущего года. Эту проблему невозможно обойти, только если переписать весь проект с использованием, например, Visual Studio. Но если все ясно с отсутствием 64-битного компилятора, другие подобные проблемы могут быть менее явными и возникать лишь на этапе переноса проекта на новую архитектуру. Оттого следует заранее выяснить, имеются ли все нужные компоненты, требуемые для реализации 64-битной версии вашего продукта, иначе  вы можете столкнуться с неприятными неожиданностями.

Разумеется, здесь невозможно перечислить все, что вам может понадобиться для проекта, но будет продолжен список, помогающий вам сориентироваться и вспомнить прочие вещи, необходимые для реализации вашего 64-битного проекта:

3.1. 64-битный компилятор

Иметь 64-битный компилятор надо обязательно.

Если вы планируете разрабатывать 64-битные приложения с использованием последней (на момент написания статьи) версии Visual Studio 2008, следующая таблица 2 поможет понять, какой из выпусков Visual Studio вам нужен.

Таблица 2. Возможности разных выпусков Visual Studio 2008.

3.2. 64-битные компьютеры под управлением 64-битных операционных систем

Можно использовать виртуальные машины для запуска 64-битных приложений на 32-битных компьютерах, но это крайне неудобно и не обеспечивает необходимый уровень тестирования. Желательно, чтобы машины имели не менее 4-8 Гб оперативной памяти.

3.3. 64-битные версии всех используемых библиотек

Если библиотеки представлены в исходных кодах, то должна иметься 64-битная конфигурация проекта. Самостоятельно обновление библиотеки для 64-битной системы являются трудной задачей, и результат может быть ненадежным и содержать ошибки. Также вы можете нарушить лицензионные соглашения такими действиями. Если вы используете библиотеки в виде двоичных единиц, то вы также должны выяснить, существуют ли 64-битные единицы. Нельзя использовать 32-битную DLL (динамически подключаемая библиотека) в 64-битном приложении. Можно создать специальную связь с помощью COM (компонентная модель объектов), но это будет отдельной большой и тяжелой задачей. Так вам может понадобиться потратить лишние деньги на покупку 64-битной версии библиотеки.

3.4. Отсутствие встроенного кода на ассемблере

Visual C++ не поддерживает 64-битный встроенный ассемблер. Вы должны использовать внешний 64-битный ассемблер (например, MASM) или иметь реализацию с такой же функциональностью на C/C++.

3.5. Обновление методики тестирования

Означает серьезную переработку методики тестирования, обновление тестов модулей и использование новых инструментов. Подробно это рассмотрено далее, но не забывайте учесть это на этапе оценки временных затрат на перенос приложения в новую систему.

3.6. Новые данные для тестирования

Если вы разрабатываете ресурсоемкие приложения, использующие большие объемы оперативной памяти, вы должны пополнить базу входных данных для испытаний. При нагрузочном тестировании 64-битных приложений желательно превышать пределы 4 Гб используемой памяти. Многие ошибки происходят именно( лишь) в таких условиях.

3.7. 64-битные системы защиты

Используемая система защиты должна полностью поддерживать 64-битные системы. Например, компания Aladdin довольно быстро выпустила 64-битные драйверы для поддержки аппаратных ключей Hasp. Но долго не было никакой системы автоматической защиты 64-битных двоичных файлов (программа обертка Hasp). Следовательно, механизм защиты приходилось реализовывать вручную в программном коде, что было трудной задачей, требующей профессионализма и времени. Не забывайте о таких вещах, касающихся защиты, системы обновления и т.д.

3.8. Установочный пакет

Вам нужен установочный пакет, способный полностью устанавливать 64-битные приложения. Остерегайтесь одной типичной ошибки - создания 64-битных установочных пакетов для установки 32/64-битных программных продуктов. Разработчики, создающие 64-битную версию приложения, часто хотят сделать в нем 64-битный режим абсолютным и создают 64-битный установщик, забывая, что те, кто использует 32-битную операционную систему, просто не смогут запустить такой установочный пакет. Обратите внимание, что в дистрибутив включено не 32-битное приложение вместе 64-битным, а сам установочный пакет. Если дистрибутив является 64-битным приложением, то он не будет работать в 32-битной операционной системе. Самое неприятное, что пользователь не сможет догадаться, почему это происходит. Он просто увидит установочный пакет, который невозможно запустить.