Если среда выполнения C++ msvcr80.dll отсутствует в скомпилированной библиотеке, есть ли способ определить, какая версия использовалась для создания библиотеки или запустить ее в более поздней версии msvcr80.dll?





Зависимость Уокер поможет вам ответить на этот вопрос.
Распространяемый пакет VC80 SP1 CRT установит как версию RTM, так и версию SP1 среды выполнения C в %SystemRoot%\WinSxS (при условии, что вы используете Windows XP или Vista; Windows 2000 не поддерживает параллельные сборки). Если у вас установлен VC8, распространяемый пакет CRT находится в %ProgramFiles%\Microsoft Visual Studio 8\VC\redist. Если у вас не установлен VC8, я думаю, вы можете загрузить распространяемый пакет CRT с Microsoft.com.
Кроме того, чтобы точно узнать, какая версия CRT (например, RTM или SP1) требуется для двоичного файла, созданного с помощью VC8 или VC9, вы можете извлечь манифест:
mt.exe -inputresource:mydll.dll;#1 -out:mydll.dll.manifest
Ищите что-то вроде этого:
<assemblyIdentity type = "win32" name = "Microsoft.VC90.CRT" version = "9.0.21022.8" processorArchitecture = "x86" publicKeyToken = "1fc8b3b9a1e18e3b">
</assemblyIdentity>
Для моего исполняемого файла требуется версия CRT 9.0.21022.8. Этот номер версии также встроен в имена подкаталогов WinSxS (к сожалению, он окружен хешами):
D:>dir c:\windows\WinSxS\*VC90.CRT*
12/14/2007 02:16 AM <DIR> amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_750b37ff97f4f68b
12/14/2007 02:00 AM <DIR> x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.21022.8_none_bcb86ed6ac711f91
Если вы разрабатываете и распространяете упомянутую DLL, рассмотрите возможность использования модуля слияния для Visual C++ 8.0 CRT как части вашего установщика.
Я заметил, что в Windows SDK 6.1 есть новый инструмент mt.exe и новый Visual C++ CRT. Я с большим успехом использую модуль слияния в качестве предварительного условия в установщике InstallShield 12.
Mt.exe - это инструмент, предоставляемый в пакете Microsoft SDK / Visual Studio для оценки манифестов. Более подробную информацию о mt.exe можно найти на странице документации MSDN: msdn.microsoft.com/en-us/library/aa375649(VS.85).aspx (обязательно посмотрите пользовательский контент внизу)