缺失 msvcr80.dll

11

如果编译库时缺少 C++ 运行时 msvcr80.dll,有没有办法确定用于创建库的版本或让它在较新版本的 msvcr80.dll 上运行?

3个回答

13

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

2
Mt.exe是Microsoft SDK/Visual Studio套件中提供的一个工具,用于评估清单。有关mt.exe的更多信息,请访问MSDN文档页面: http://msdn.microsoft.com/en-us/library/aa375649(VS.85).aspx (确保查看底部的用户内容) - Steve

10

3
如果您正在编写和分发所提到的DLL,请考虑使用Visual C++ 8.0 CRT合并模块作为安装程序的一部分。
我注意到Windows SDK 6.1中有一个新的mt.exe工具和新的Visual C++ CRT。我在InstallShield 12安装程序中使用合并模块作为先决条件,并取得了巨大的成功。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接