MSVCRT в соответствии с Windows как glibc (libc) под *, отклоняют?

Я часто сталкиваюсь с Windows-программами, которые связываются в MSVCRT (или их более актуальные эквиваленты) с исполняемыми файлами программы. На типичном ПК я нашел бы много копий того же.DLL's. Мое понимание - то, что MSVCRT является библиотекой времени выполнения C, несколько аналогичный glibc/libc.so под *отклоняют.

Почему Windows-программы должны взять с собой свои библиотеки C с ними, вместо того, чтобы просто совместно использовать libc в масштабе всей системы?


Обновление: благодаря Shog9 я начал читать о SxS, который далее открыл мои глаза проблемам связи DLL (Ад DLL) - http://blogs.msdn.com/b/martynl/archive/2005/10/13/480880.aspx является одним полезным введением к проблеме...

21
задан Natan Yellin 14 August 2011 в 14:21
поделиться

3 ответа

[Я - текущий специалист по обслуживанию Собственного компонента технология SxS в Microsoft]

, Новые версии MSVCRT выпущены с новыми версиями Visual Studio и отражают изменения в комплекте инструментальных средств C++. Так, чтобы программы, скомпилированные с версиями VS, выпущенного после конкретной версии Windows, продолжились, может работать низкий уровень (такой как проекты VS 2008 года на Windows XP), MSVCRT является распространяемым файлом, таким образом, это может быть установлено там.

установка CRT бросает библиотеки в %windir %\winsxs \, который является глобальным системным местоположением, требуя, чтобы права администратора сделали так.

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

13
ответ дан 29 November 2019 в 20:48
поделиться

Короткий ответ? Поскольку вплоть до SxS MSVCRT не был надежно имеющим версию ! Можно ли вообразить безумие, которое закончилось бы, если программы, скомпилированные и протестированные против libc 5, тихо начнут использовать libc 6? Это - ситуация, в которой мы были много лет в Windows. Большинство из нас так же, как скоро снова никогда не доверяло бы MS хранение повреждающихся изменений из версии

11
ответ дан 29 November 2019 в 20:48
поделиться

Программы связаны против определенной версии времени выполнения, и что требуемая версия не , гарантировал, что существовал на целевой машине. Кроме того, совпадение версий раньше было проблематично.

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

В мире Linux это не всегда как простое, так как существует намного большее изменение для того, как хост-система могла бы посмотреть.

2
ответ дан 29 November 2019 в 20:48
поделиться
Другие вопросы по тегам:

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