缺lessmsvcr80.dll

如果C ++运行时msvcr80.dll从编译库中丢失,是否有任何方法可以确定使用哪个版本创build库或使其在msvcr80.dll的更高版本上运行?

VC80 SP1 CRT可再发行组件包将将C运行库的RTM和SP1版本安装到%SystemRoot%\WinSxS (假设您使用的是Windows XP或Vista; Windows 2000不支持并行程序集)。 如果安装了VC8,则CRT可再发行组件包位于%ProgramFiles%\Microsoft Visual Studio 8\VC\redist 。 如果你没有安装VC8,我想你可以从Microsoft.com下载CRT可再发行组件包。

此外,为了准确找出VC8或VC9构建的二进制文件所需的CRT版本(例如,RTM与SP1),可以提取清单:

 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安装程序中使用合并模块作为先决条件,并取得了巨大的成功。