Отсутствует msvcr80.dll - PullRequest
       16

Отсутствует msvcr80.dll

11 голосов
/ 20 октября 2008

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

Ответы [ 3 ]

13 голосов
/ 20 октября 2008

Вторично распространяемый пакет 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
10 голосов
/ 20 октября 2008

Dependency Walker поможет вам ответить на этот вопрос.

3 голосов
/ 09 августа 2009

Если вы создаете и распространяете упомянутую DLL, рассмотрите возможность использования модуля слияния для Visual C ++ 8.0 CRT в качестве части вашего установщика.

Я заметил, что в Windows SDK 6.1 есть новый инструмент mt.exe и новый CRT Visual C ++. Я использую модуль слияния в качестве предварительного условия в установщике InstallShield 12. С большим успехом.

...