#visual-c
#visual-c
Вопрос:
Я использую сторонние библиотеки, которые я приобрел задолго до выхода KB2465367. Мой компьютер для разработки был обновлен на KB2465367, поэтому все двоичные файлы, которые я генерирую, похоже, теперь зависят от 8.0.50727.5592 CRT (версия CRT 2465367).
Теперь, когда я хочу развернуть это приложение, я использую модуль слияния CRT 8.0 (также обновленный 2465367). Это устанавливает версии библиотек MSVC 8.0.50727.5592 (например msvcrt80.dll ).
Но, когда я запускаю свое приложение на компьютере, на котором никогда не была установлена среда выполнения VC, оно выдает сообщение о том, что «Этому приложению не удалось запуститься из-за неправильной конфигурации приложения. Переустановка приложения может устранить эту проблему «. Я проследил это до системной записи в журнале событий: «Не удалось сгенерировать контекст активации для C:Program FilesMyCompanyMyApp.exe . Справочное сообщение об ошибке: операция успешно завершена «. под исходным кодом «SideBySide».
Конечно, это обновление в основном означало, что я в тупике.
Как мне действовать дальше? Нужно ли моим клиентам устанавливать версию CRT 8.0.50608.0 после установки моего приложения, потому что сторонним библиотекам требуется 8.0.50608.0, а MSM, который я использовал, ее не включал?
В моих обстоятельствах я использую Как установить Visual C , распространяемый с помощью вашего установщика, который описывает только использование одного MSM. Рекомендуется также использовать политику MSM для перенаправления любых библиотек DLL, зависящих от более старых версий среды выполнения. Смотрите также http://lynk.at/jlqsKx
Ответ №1:
То же самое произошло, когда MS выпустила KB971090.
Простым решением является удаление KB2465367.
Вы можете получить дополнительную информацию о KB971090 и KB2465367 здесь.
Ответ №2:
В исправлении есть ошибка с неинициализированными данными, которая может привести к сбою загрузки DLL.
Комментарии:
1. Это побочная проблема, поскольку моя сторонняя библиотека DLL зависит от версии msvc, которая недоступна. Пока ничего не запускается; таким образом, он не может получить доступ к какому-либо коду с потенциальной ошибкой в нем.
Ответ №3:
Ваша программа установки должна использовать два модуля слияния:
- Библиотеки среды выполнения и
- Файл политики, который перенаправляет все старые версии среды выполнения на новую версию.
Распространяемый пакет vcredist_xxx.exe
устанавливает как последнюю версию библиотек, так и файлы политики.
Нельзя предполагать, что библиотеки VC доступны на компьютерах пользователей, поэтому их всегда приходится устанавливать. В противном случае ваше приложение не будет запущено.