Является ли программа Boost для Windows переносимой на другие системы Windows? - PullRequest
3 голосов
/ 01 декабря 2010

Я рассматриваю два варианта программы. Либо C ++ с Boost Asynchronous IO, либо Java с асинхронным NIO. Я знаю, что Java является переносимой, пока система имеет время выполнения Java. Я бы предпочел использовать C ++ с Boost, но я не уверен, что написанная мною программа может быть перенесена на другой компьютер с Windows и все еще работать Что мне нужно сделать, чтобы программа имела все необходимые зависимости во время выполнения? Я планирую использовать только windows.h, C ++ 2003 и библиотеки Boost.

Ответы [ 2 ]

6 голосов
/ 01 декабря 2010

boost и CRT могут быть статически связаны с вашим исполняемым файлом, поэтому никаких внешних зависимостей вообще не будет.

3 голосов
/ 01 декабря 2010

Пока вы используете Boost, стандартную библиотеку C ++ (и CRT, если считаете нужным), ваш код будет переноситься довольно легко.

Убедитесь, что вы избегаете любых расширений Microsoft CRT, таких как функции str*_s (например, здесь ) - MSDN, к сожалению, не очень хорошо помечает их как нестандартные.

Также избегайте использования функций C ++ 0x в Visual C ++ v10 для максимизации переносимости в краткосрочной перспективе - или проверьте, что другие нацеленные вами компиляторы имеют функции, которые вы планируете использовать.

Будьте осторожны: Если вы используете кучу вещей из windows.h, вы нарушите мобильность и увеличите объем работы, которую вам нужно сделать. Избегайте этого, насколько это возможно, если вы ожидаете портирования позже, и если вам что-то нужно оттуда, попробуйте выделить использование в отдельном заголовке и файлах кода «Мне нужно изменить это, когда я портирую», так что вы знаю, что вам нужно смотреть только на это подмножество вашего кода при портировании на другую ОС.

...