Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Переносимость программы |
Автор: hoz 15.3.2014, 19:37 |
Читаю книгу. Написано, что существуют проблемы переносимости программ. Я одного не понимаю. Имею ввиду программ в каком виде? Т.е. в скомпилированном? Но ведь множество программ, которые уже написаны (имею ввиду без ошибок в логике) и которые можно скачать, скажет так, в интернете работают стабильно. Единственно, чаще всего зависит только от версии операционной системы и всё. Имеется ввиду это? |
Автор: Фантом 15.3.2014, 19:54 | ||
Сколько операционных систем Вы знаете? |
Автор: hoz 15.3.2014, 21:26 |
Фантом, Вы имеете виду версий или разновидностей ОС? Если вообще систем, то на вскидку Windows, MacOS, FreeBSD, NetBSD. Solaris, пачка разновидностей Linux-подобных систем. |
Автор: baldina 16.3.2014, 01:52 |
hoz, скомпилированная программа может исполняться только на целевой платформе (тип процессора+OC). программы, исполняемые в рамках специальной среды (например JVM, .NET), требуют наличие этой среды. на разных платформах реализация сред может отличаться. например, .NET разрабатывался только для Windows. под *nix есть проект Mono, но он не на 100% совместим. ну и есть программы на интерпретируемых языках. здесь требуется, что бы интерпретаторы одинаково интерпретировали и содержали одинаковые функции, что тоже не всегда бывает. все это значит, что готовая программа в общем случае не переносима на другую платформу. вобщем-то и исходный код без определенных усилий не переносим. нужно учитывать особенности компилятора/интерпретатора на разных платформах плюс делать соответствующий выбор прикладных библиотек для реализации интерфейса пользователя, сетевых задач, БД и т.д. так что проблема есть, и совсем не простая |
Автор: hoz 16.3.2014, 22:02 |
baldina, с программами я уяснил. По крайне мере теоретически въехал. А с библиотеками дело обстоит так же? Например, если я пишу библиотеки, которые в будущем хочу загнать в .dll. Это ж не означает что для WinXP их придётся перелопать, для Win 7 тоже самое, для Win 8 опять же лопатить и тд и тп? |
Автор: vinter 17.3.2014, 08:01 | ||
dll, в общем случае, будут работать на любой, современной, версии windows. |
Автор: xvr 17.3.2014, 12:40 | ||
Не совсем. DLL написанные под более старую Windows будут работать на более новой, и то не всегда. Даже между версиями Windows есть некоторые проблемы совместимости, MS обновляет интерфейсы, в том числе и старые. Не зря в Win7 есть режимы запуска программ в разных режимах совместимости. |
Автор: vinter 17.3.2014, 16:46 |
xvr, это уже специфика. В общем случае dll работает везде, как и exe. Естественно могут возникнут проблемы с запуском на XP и ниже, если заранее не обеспокоится, но это , повторюсь, специфика. |
Автор: baldina 18.3.2014, 00:17 |
hoz, если говорить о переносимости твоей библиотеки, то, для простоты полагая, что она сторонних библиотек не использует, и разрабатывается сугубо под windows, достаточно использовать лишь api, присутствующее в самой старой oc (сервис паки, кстати, могут содержать дополнения api). ну и выбрать по вкусу процессор/разрядность. если делать проект в студии по умолчанию (win32x86, безо всяких sse), и не использовать самых новых функций, оно будет в большинстве случаев совместимо, как сказал vinter. |