[转]VS2015编译的程序在其他机器上缺少msvcp120.dll
http://www.lai18.com/content/1159618.html
1、
今天分享一个自己在开发过程中遇到的困难。
用VS2015开发了一个windows客户端(win32项目),在自己的机器上运行很流畅。当你得意的把releas版本进行打包,并进行发布后,问题来了?很多人反馈运行时缺少msvcp140.dll,甚至有人在XP系统上完全不能用。
那么首先看看是如何解决的:
在工程上打开属性,选择C/C++,选择代码生成,把运行库改为“多线程(/MT)”。重新编译即可。
但是对于兼容XP的问题呢?同样是在工程的属性里,选择常规,平台工具集中选择“Visual Studio 2015-Windows XP(v140_xp)”
你以为这样就大功告成了吗,大错特错。上面的方法是解决缺少msvcp140.dll的方法,但是我遇到的问题是缺少msvcp120.dll。
到底这是个什么鬼?
其实说白了就是C++的动态链接问题。
msvcp120.dll是vs2010编译的程序默认的库文件。msvcp120.dll可以解决某些大型游戏、程序由于vs2010编译系统中缺失此dll的问题。vs2010编写的程序运行所需dll。
如果您的系统提示“找不到msvcp120.dll ”或“msvcp120.dll 缺失” 或者“msvcp120.dll 错误”的问题,下载本文件复制到*/Windows/SYSTEM32下,即可解决问题。
那这么说msvcp140.dll就是vs2015对应的库文件了。
这时候关键问题来了?我用的是vs2015,而且已经改为了多线程(/MT),但是为什么会显示缺少msvcp120.dll呢?
哎,怪自己孤陋寡闻,被这个问题折磨了一天。
这时候常规的做法是用depends来看一下.exe的依赖项。
看了很多遍都没发现问题。
最后灵机一定,是不是使用的第三方库(别人的dll)出了问题呢?这里用到了一个gloox.dll,迅速用depends看下gloox.dll,果然存在对msvcp120.dll的依赖。
怎么办呢?找gloox的源码吧,自己重新编译一下。
但是在编译gloox的时候,出错了。。。。。。
未完待续。。。。。。
2、
3、