Я компилирую проект, который использует несколько DLL и компилируется с VS2008.После недавнего обновления Windows библиотеки DLL, скомпилированные на моем компьютере, перестали работать на других компьютерах.
После некоторых исследований выяснилось, что она обновляет распространяемую библиотеку CRT, с которой я собираюсь, с версии "9.0.21022.8" до версии«9.0.30729.4148»
Это видно из файла манифеста EXE-файла, который я компилирую.он содержит следующее:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.4148" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
Это означает, что он хочет использовать две разные версии CRT одновременно.вторая версия необходима для кода, который я сейчас компилирую, а первая версия нужна для старых библиотек, которые были скомпилированы несколько недель назад.
На компьютерах, где развернуто приложение, это становится проблемойтак как они получают свои библиотеки CRT из локальной папки с именем Microsoft.VC90.CRT
, а не из WinSXS.Эта папка не может содержать две разные версии dll.
Есть ли известное решение этой проблемы или мне нужно начать компилировать все остальные библиотеки DLL с новым CRT?