ЭЛТ, нам все еще нужно распространять это? - PullRequest
4 голосов
/ 15 апреля 2010

Нужно ли еще беспокоиться о vcredist.exe при распространении собственных приложений Windows? Есть ли какие-либо из них в комплекте с Win-7?

Если нет, то есть ли какие-либо технические причины, по которым они не отправляются людям, например, через обновление Windows - вместо того, чтобы позволить нам обременять клиентов еще одной вещью, которая должна работать? (Хорошо, это может показаться спорным, но мне действительно интересно, почему эти библиотеки не устанавливаются / обновляются по умолчанию на компьютерах с Windows)

Ответы [ 4 ]

2 голосов
/ 15 апреля 2010

Я думаю, это зависит от того, как / с чем вы связаны. Если вы напрямую связаны с kernel32.dll и т. Д., То это, разумеется, не имеет значения (т. Е. Встроенная библиотека c), но Microsoft не рекомендует такой способ распространения.

Если вы связаны через msvcr80 / 90 / what 2010 is.dll, вам может потребоваться распространить эту библиотеку времени выполнения, поскольку в XP она не входит в стандартную комплектацию. msvcr80 входит в Vista, но я не думаю, что msvcr90 - хотя это может быть добавлено обновлением Windows. Тем не менее, вы не можете полагаться на то, что он находится там, поэтому на всякий случай нужно иметь его копию на всякий случай.

Насколько я знаю, msvcrt.dll (на который ссылается mingw) распространяется со всем> xp. Vc6 ссылается на это? У меня тогда не было VC ++.

Взгляните на исполняемый файл с depends.exe из Windows SDK и выясните, что входит в него, помимо частей Windows API.

1 голос
/ 15 апреля 2010

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

Кроме того, вы можете связать со статической сборкой среды выполнения, избегая необходимости беспокоиться о распространяемой среде выполнения C.

0 голосов
/ 12 ноября 2010

Это ответ на комментарий Ларри Остермана от 14 апреля в 23: 29:

Вы говорите:

msvcrt.dll не является средой выполнения C. Это внутренний компонент Windows, который никогда не должен быть используется сторонними приложениями. Вы заметите, что вы не можете найти ссылки на MSDN, которые используйте эту DLL. Когда-то сторонние приложения использовали это, но это не было дело около 10 лет. - Ларри Остерман 14 апреля в 23: 29

Похоже, что это идет вразрез со всей предпосылкой системы mingw, которая основана на доступе к msvcrt.dll, и ваш комментарий позволил мне лучше понять, как работает mingw. Оказывается, mingw по-прежнему использует файл msvcrt.dll, который был отправлен еще в 1998 году! Смотрите эту ссылку:

http://www.mingw.org/wiki/C99

Спасибо,

Todd

0 голосов
/ 15 апреля 2010

При компиляции с GCC я всегда связываюсь с MSVCRT.DLL, которая всегда есть на XP и новее.

...