Задать вопрос
@pavelpasha

Какова практика программирования максимально совместимых приложений под Windows?

Как обеспечить максимальную совместимость с существующими версиями Windows (XP-10)? Поставил цель написать небольшую программку(без интерфейса, просто сетевые и системные функции). Единственный язык которым я более-менее владею - С#. Но версии .NET Framework не обладают обратной совместимостью. В 10-ке по умолчанию выключена поддержка ранних версий фреймворка, а голая XP не имеет даже версии 2.0. В общем - вариант не подходит. Взялся учить C++, думал - язык то компилируемый. Создал консольное приложение win32. Скомпилировал и был разочарован. Требуется visual c++ redistributable, причем соответствующая версия. Версии опять же обратно не совместимы. И более того - ни одна из версий не установлена по умолчанию.
  • Вопрос задан
  • 289 просмотров
Подписаться 2 Оценить 1 комментарий
Решения вопроса 1
15432
@15432
Системный программист ^_^
Совместимо всё, выбирайте статическую линковку (свойства проекта - C++ - Code Generation - Runtime Library - Multi-thread)

Вот для примера моя программка для "усреднения" почти одинаковых файлов, позапускайте от XP до десятки

rgho.st/6bfgtjnXl
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@laxikodeje
1. С++ Redist можно распространять вместе со своим дистрибутивом.
2. Можно включить опцию "статическая компоновка" и тогда внешние библиотеки почти и не понадобятся.
3. Не использовать внешних библиотек, которые вы не можете прилинковать.
4. Аккуратно подходить в выбору вызовов API, читать доку, в каких версиях они доступны, проверять на чистых голых ОС. Например, GDI+ на голой WinXP не доступен, но ставится туда с обновлениями. Хрен знает - будут ли эти обновления стоять в вашей ситуации.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Еще как вариант максимальной совместимости - не использовать стандартную библиотеку и писать на чистом WinAPI, обращая внимания в описаниях функций WinAPI в какой версии виндов она появилась, если функция новая, то не используйте ее.
Все сторонние библиотеки линкуйте статически.
Можно добиться того, что программа будет вообще без зависимостей, если не считать зависимость от ОС.
Это довольно геморройное занятие, особенно, если софтина более или менее приличного функционала.
Первые две недели будет сложно, потом все станет гораздо проще :-)
Ответ написан
Комментировать
Drakonn
@Drakonn
Инженер-программист
Проект на MFC и статическая линковка - 100% запустится везде и исполняемый файлик не более 3-4 МБ
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы