Другие прокомментировали GUI и использование других библиотек, которые существуют только на подмножестве основных платформ.
Еще одним фактором являются разработчики. Многие разработчики (или компании-разработчики программного обеспечения) имеют только опыт, доступ, потребности клиентов или необходимость использовать одну платформу, и поэтому они не тратят лишних усилий, чтобы сделать свое программное обеспечение кроссплатформенным. Например, если у компании есть ПК с Windows и инструменты для разработчиков на каждом рабочем месте, нет собственных компьютеров под управлением Linux или Mac, на которых можно разрабатывать или тестировать, а также нет разработчиков, которые являются экспертами в этих других платформах, и нет крупных клиентов, требующих другую платформу, им трудно оправдать не просто продвижение вперед с помощью пакета только для Windows. И если они передумают позже, когда у них есть опыт, оборудование или дополнительные требования, они могут обнаружить, что уже слишком поздно исправлять большую кодовую базу, которая позволила стать очень зависимой от платформы.
Независимость от платформы требует реальных усилий, на каждом этапе пути. Если вы начинаете с первого дня с планом, используете кроссплатформенные библиотеки (например, Qt, boost, OpenGL и т. Д., Тщательно избегая MFC, DirectX и т. Д.), А также регулярно собираете и тестируете на всех платформах, вероятно, это всего лишь 10 -20% больше усилий, чтобы сделать хорошее кроссплатформенное приложение. Но если вы начнете с одноплатформенного приложения, которое разрабатывалось в течение длительного времени, то для его кроссплатформенности может потребоваться столько же усилий, сколько для его написания с нуля, и это может быть особенно трудно обосновать, если новая платформа имеет сравнительно небольшая доля рынка в вашей отрасли или если ваши разработчики ненавидят работать над этим.