Я компилирую проект, который использует несколько DLL и компилирует с VS2008. После недавних обновлений Windows DLL, скомпилированные на моем компьютере, перестали работать на других компьютерах.Обновление 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>
Это означает, что он хочет использовать две разные версии ЭЛТ одновременно. Вторая версия нужна коду, который я компилирую прямо сейчас, и первая версия нужна старым dll, которые были скомпилированы несколько недель назад.
В компьютерах, где развертывается приложение, это становится проблемой, так как они получают свою DLL CRT из локальной папки с именем Microsoft.VC90.CRT
, а не из WinSXS. Эта папка не может содержать две разные версии dll.
Есть ли известное решение этой проблемы или мне нужно начать компиляцию всех других DLL с помощью нового CRT?
Я думаю, что я заметил ту же самую проблему на прошлой неделе. После обновления Windows проект, который был построен отлично в предыдущий день, больше не строился. Фактически это вызвало крах ICE в компиляторе VS2008. Все это исправлено. Я никогда не определял точной причины, но для меня это не такая уж большая проблема, как мы еще не отправили. – demoncodemonkey