VCRuntime140.dll 这是VC运行时库和编译器相关的必备模块,必须存在。

msvcp140.dll 如果你写的程序含有C++标准库的代码,那就必须存在。
ucrtbase.dll和api-ms-xxxxx.dll 必须存在。
微软强烈推荐使用vcredist.exe来给目标机安装相应的文件。它会安装所有对的UCRT文件和必备组件。这是最省事儿便捷的方法。
但是vcredist_x86.exe和vcredist_x64.exe就各有近14MB的体积!大型程序发布的时候可能无所谓,而很多很多基于互联网发布的程序,却不可能这么干。互联网程序对安装包的大小很敏感,这直接影响最终用户终端的到达率和推广成本。
可参考PHP7.1的Windows版的下载页面和安装包。
程序自带VCRuntime140.dll和msvcp140.dll,再给系统打基于msu的KB2999226补丁。KB2999226补丁会给系统安装UCRT。一般情况下,Windows10已经自带了UCRT,不需要额外打补丁。
这种方法不适用于WinXP系统。而在中国WinXP系统还有很大保有量,大家都不会轻易放弃这个庞大的用户群的。
可参考Python 3.5的Windows安装包。
现在互联网程序大多使用的是app-local的部署模式,意思就是把依赖库放在自己程序目录下,既不会跟别的应用软件冲突,又方便了软件分发。
起初,微软并没有打算针对UCRT程序继续这样的部署模式。但是后来大家反响比较强烈,所以在Windows 10 SDK发布的时候,把UCRT和UMP的相关dlls都一起发布了。这个目录一般是“C:\Program Files (x86)\Windows Kits\10\Redist\ucrt”。
你也可以在Visual Studio 2015的安装目录下找到VCRuntime140.dll和msvcp140.dll。这个目录一般是“C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT”。
有些开发者一开始可能会被ucrt目录下的四十几个文件吓到,不过还好都不大,打包压缩以后都很小。
可参考Visual Studio 2015配套的Remote Debugger 调试工具。这个工具由于要求是“standalone”的,所以就是用此方法部署的。可以在这里找到:“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x86”。
UCRT的确给我们带来了很多全新的概念,也给我们带来了少许的不适应。但这毕竟是未来的发展方向。基于UCRT的Visual Studio 2015给我们带来的众多新的C、C++语言标准的支持,我相信以后C++程序会变得更加强大。按照网上的一些说法,未来不排除会对VCRuntime模块再次优化重构的可能性,这个我们只能拭目以待了。Visual Studio 2017即将发布,我们也将继续跟进UCRT的发展方向。
[1] CTP 即Community Technology Preview,译为社区技术预览版,一般是微软开发软件的早期对内测试版
[2] 参考:https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/
[3] 参考:https://msdn.microsoft.com/zh-cn/library/mt186421.aspx
作者简介:陈建明,目前就职于上海恺英网络科技,C++组组长。十多年来,尽管各种编程语言均有涉猎,但主要一直致力于Windows C++平台的各种应用架构、开发和前沿技术的研究。
责编:何永灿(heyc@csdn.net)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-68942-3.html
很对很对我也这么认为
笑死人的事情