Почему бы не установить Msvcr71.dll в system32?

пока ищу авторитетный источник отсутствует Msvcr71.dll Это необходимо для нескольких старых приложений, я наткнулся на статью MSDN перераспределение общего компонента среды выполнения C в Visual C++. Совет, данный разработчикам, заключается в том, чтобы поместить DLL в каталог приложения вместо system32 С DLL файлов в этот каталог считается до системных путей.

что может пойти не так, если я (как администратор, а не разработчик) решение взять ленивый путь и установить Msvcr71.dllMsvcp71.dll а я на него) в system32 каталог (32-разрядных систем Windows XP или Windows 7) вместо размещения копии в каталоге каждого приложения? Есть ли еще одно хорошее решение для предоставления приложениям необходимых библиотек DLL, которые не включают копирование материалов в каталоги приложений?

добавлено после первых ответов: Я понимаю, что несовместимые изменения API мая были внесены упомянутые библиотеки DLL, но почти каждое упоминание о несовместимостях, которые я нашел с помощью Google, связано с играми или видеокодеками. Прямо сейчас, я ожидаю, что риск поломки очень мал. Я что-то пропустила?

16
задан hillu
27.11.2022 20:00 Количество просмотров материала 2839
Распечатать страницу

3 ответа

основной (единственный?) проблема совместимости между разными версиями Msvcr71.файл DLL. Предположим, что 7.10.0 немного несовместим с 7.10.1, а приложение App1 зависит от старого поведения, а приложение App2 зависит от нового поведения. Кроме того оба приложения не поставляются сама среда выполнения C++. В этом случае одно из двух приложений не удастся.

Как часто бывают такие случаи? Я не знаю, но я бы сказал, что они редко.

в зависимости от различия между msvcr71.dll версии приложение не сможет запустить или определенная функция не будет работать.

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

PATH=c:\PathToMSVCR71.DLL_Version_7.10.0
myapp1.exe

таким образом, вы можете повторно использовать ту же библиотеку DLL в нескольких приложениях и обновлять ее проще.

EDIT Практически невозможно оценить опасность столкновения версии, тем более, что вы не упомянули приложения, которые вы используете. Именно поэтому я искал все различные версии на моем компьютере (Windows 7 / x64). Я нашел следующие файлы: alt text

все файлы являются копиями этих двух: 7.10.3052.4 и 7.10.6030.0. 7.10.3052.4 также, что dll-files.com предложения.

Я также сравнил выход dumpbin /imports /exports msvcr71.dll для этих версий и ни экспорт, ни импорт не изменились (как ожидалось).

5
отвечен kaboom 2022-11-29 03:48

" дополнительная информация "в статье вы связаны с Говорит размещение CRT в system32" может вызвать проблемы при запуске приложений, которые связаны с другой версией CRT на компьютерах, которые не имеют правильные версии библиотеки DLL CRT установлена."

например, предположим, что для App1 требуется версия 2.1 Msvcr71.dll для его функции SpinMyRainbowPinWheel для работы. Разработчики App1 установили Msvcr71.dll в каталоге program files приложения App1.

Если вы приходите и поместите версию 2.0 Msvcr71.dll в system32, App1 начнет использовать системный файл вместо того, что было установлено в каталоге program files. Функция SpinMyRainbowPinWheel больше не будет работать, и вы получите звонок от генерального директора, потому что вертушка не вращается на его мониторе, когда он дует в микрофон. Бизнес останавливается!

4
отвечен Rob D. 2022-11-29 06:05

не делать, и я повторяю, никогда не заменять или добавлять системные библиотеки DLL. Я не понимаю, почему ты не можешь просто связать это? Именно поэтому вы создаете пакеты установщика. Я знаю, что у Microsoft есть инструмент для создания установки с VS6, и если у вас его нет, вы можете использовать что-то вроде innosetup. И причина, почему они говорят вам поставить DLL в той же папке, потому что это где, afaik, приложение ищет в первую очередь для DLL.

помимо этого, две вещи приходят на разум:

1) DLL может быть уже в системе, о которой идет речь

2) я уверен, что Microsoft предоставляет пакет установки для установки необходимых библиотек DLL, если они отсутствуют. Что я бы рекомендовал вам использовать вместо того, чтобы просто случайно заменять / добавлять DLL-файлы.

идеальный пример того, почему вы не должны касаться системных библиотек DLL мой опыт работы с GTK. Различные приложения используют разные версии GTK. Помню, одно приложение решило быть " ленивым" и установите системную библиотеку DLL для GTK. Другие приложения, которые использовали GTK, больше не работали.

0
отвечен Nathan Adams 2022-11-29 08:22

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх