提供一些关于这个问题的背景。我们将 windows zip 实用程序与我们的产品一起打包。这个 zip 实用程序是从我们的一个产品脚本中调用的,用于打包一些日志文件。我们的一位客户提出了一个问题,即当他们运行调用 zip.exe 的脚本时,他们会弹出此消息——“程序无法启动,因为您的计算机中缺少 MSVCR71.dll”。我检查了依赖walker 工具中的zip.exe,果然,我可以看到对msvcr71.dll 的依赖。客户告诉他们可以通过手动将 MSVCR71.dll 文件放在路径 C:\Windows\SysWOW64 中或安装 Windows 7 redists 来克服这个问题。
但是,我创建了一个新的 Windows 2012 VM,没有安装任何其他软件,并且我可以在路径 C:\Windows\SysWOW64 中看到 msvcr71.dll,并且 zip.exe 成功运行而没有抱怨缺少 dll。所以想检查msvcr71.dll是否默认可用?
Microsoft Visual C++ Redistributable 默认不存在,需要安装。这可能包括
msvcr*.dll
,但也msvcm*.dll
和msvcp*.dll
,具体取决于应用程序。它有时可能由其他应用程序安装在客户端计算机上,但您不能依赖它的存在或将安装的版本。为了避免这种依赖关系,并且由于客户端并不总是同意为您自己安装额外的包,通常的做法是将使用的 DLL 包含在应用程序的安装文件夹中。这是完全合法的,因为这个 Microsoft 软件是“可再发行的”。