Получение неверной версии среды выполнения C в моих файлах манифеста (Visual Studio 2008) - PullRequest
2 голосов
/ 27 сентября 2010

У меня проблема со сборкой приложения в Visual Studio 2008. В свойствах моего проекта я объявил следующее:

_BIND_TO_CURRENT_MFC_VERSION = 1 _BIND_TO_CURRENT_CRT_VERSION = 1 _BIND_TO_CURRENT_ATL_VERSION * * 100 * * 100 * 1При сборке моего приложения в VS2008 он генерирует промежуточный файл.manifest, который содержит:

<dependentAssembly>
  <assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.30729.1' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>

Теперь на этом компьютере установлены более новые библиотеки DLL времени выполнения C (версию 9.0.30729.4148 можно найти в папке WinSxS).Предполагается, что приведенные выше определения препроцессора говорят VS использовать последние DLL-библиотеки времени выполнения, но, похоже, этого не происходит.Кто-нибудь может объяснить, почему dev studio не будет показывать более новую версию этих DLL в манифесте?Я могу создать то же приложение на других машинах и получить правильный номер в файле манифеста, так что это должно быть что-то особенное при настройке этой машины, но я не знаю, что.

Машина, на которойУ меня проблема с сервером Windows 2003 SP2.Кто-нибудь может пролить свет на то, как dev studio работает, какая последняя версия времени выполнения?

Спасибо, Ал.

1 Ответ

2 голосов
/ 27 сентября 2010

У вас действительно есть старая версия ЭЛТ.Номер версии указывается в файле включения vc \ include \ crtassem.h.Центр обновления Windows должен был предоставить вам обновление безопасности, выпущенное в июле прошлого года.Он также обновляет файлы CRT .h и .lib.Возможно, вы получили этот выпуск от установщика другой программы.

Если вы не хотите включать Центр обновления Windows, вы можете получить обновление безопасности здесь .Помните, что загрузка, которую он запускает, довольно велика.

...