admin 管理员组文章数量: 887007
先写结论,最好不要使用VS2015-WinXP编译工具来编译VC++程序,因为你最终会发现,编译出来的程序如果是动态链接到运行库的话,即便你已经拷贝了所有需要的运行库dll,当在xp系统上运行时,还是会提示缺少ucrtbased.dll(Debug版)或者ucrtbase.dll(Release版)。
解决办法有两个:
1.静态链接到运行时库 (MT 或者 MTd) 如果使用了MFC,还要静态链接到MFC
2.安装VS2013 直接用VS2013-WinXP来编译,编译出的程序只要附带上运行库dll即可直接在XP上运行
下面记录一下自己使用Visual Studio 2015 - Windows XP (v140_xp) 碰到的坑:
开始时,使用的VS2015 SP1,platform toolset选择的Visual Studio 2015 - Windows XP (v140_xp) ,编译出来debug版的程序,是动态连接到MFC和CRT的,我把所有需要的vc runtime dlls都拷贝到了xp虚拟机里面,但是发现程序无法运行,弹出无法找到ucrtbased.dll,于是google开始找解决办法,微软的官方说法是 VS2015修改了CRT runtime,增加了ucrtbase.dll这么个组件,这个组件必须得操作系统安装一个补丁才能有,直接把文件拷贝过去是不行的。但是XP没有这个补丁,最低是WIN7。
然后从VS2015SP2开始,微软修复了这个问题,XP也可以安装ucrtbase.dll这个组件了,方法就是必须安装VS2015的vcredist_x86.exe,这个文件的路径在D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\1033下面,于是我开始更新我的VS2015,下载了SP3的更新包(下载链接),更新完毕花了将近4个小时。
然后我用VS2015SP3重新编译了release版的程序,并且在我xp的虚拟机里面安装了SP3版本的vcredist_x86.exe,程序可以运行了。
但是还是有如下问题:
1.编译出来的debug版的程序仍然无法在xp上运行,因为缺少ucrtbased.dll,我也没有找到debug版的vcredist_x86.exe
2.我的程序没有安装包,我不想用户在使用的时候还必须得安装一个vcredist_x86.exe,那跟使用C#程序之前必须安装一个 framework有什么区别?
最后我决定使用VS2013-Windows XP 来编译我的程序,因为我电脑上之前装有VS2013,后来装的VS2015,所以工程-属性里面可以直接选择VS2013的platform toolset。这样的话就可以使用VS2015的IDE来写代码,使用VS2013的编译器来编译生成程序。
而且我可以确定的说,VS2013-Windows XP编译出来的无论是debug版还是release版,32位或者64位,只需将对应的VC Runtime dll拷贝到程序目录下,就可以直接在XP上运行,方便调试和使用。
至于说如何为VS2015安装VS2013的平台工具集(platform toolset),老老实实再装一个VS2013吧,装完之后,VS2015里面会自动识别出来的。简单的办法我用google也没有找到,如果谁找到了,评论里面留言下,多谢~。毕竟再装一个VS2013是要花很多时间和精力的~~
本文标签: 缺失 工具 Windows Studio visual
版权声明:本文标题:Visual Studio 2015 - Windows XP (v140_xp) 编译工具ucrtbased.dll缺失 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1727339649h1104578.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论