[转]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、

时间: 2024-11-01 19:15:33

[转]VS2015编译的程序在其他机器上缺少msvcp120.dll的相关文章

vs2013编译的程序在其他机器上运行的环境设置

vs2013编译的程序在其他没有安装vs2013的机器上运行会有问题,网上有很多解决方法,如果你还没有解决,可以尝试以下方法,这是我在反复崩溃,烦躁测试后得到的解决方法. 1. 安装vs2013 运行包 vcredist_x64.exe 如果这个时候还是不能正常执行,请不要和我一样崩溃, 试试我的解决方法,对这个运行包进行修复 控制面板--程序--程序和功能 在程序列表里找到 vc++ 12.0.30501 选中,修复 这样就可以打开vs2013编译出来的程序了,我碰到的情况是这样解决的. ==

win10下vs2015编译的程序如何运行在win7等系统(无需安装Redistributable)

最近新写的程序要做beta测试,在做绿色版(免安装版)时遇到了问题,vs2015做的项目本以为像之前的vs版本一样把msvcrXXX.dll还有另外几个运行时库都放到exe旁边即可,然并卵...,在win7的测试机上还会提示找不到这个dll:api-ms-win-crt-runtime-l1-1-0.dll,如下图 继续找到这个dll拷到exe旁,坑爹的一幕放生了,竟然提示那个dll有问题——无法定位程序输入点ucrtbase.terminate... 难道是版本不对,我机器上是有几个不同大小的

让VC编译的Release版本程序在其他机器上顺利运行

链接的时候分静态链接和动态链接两种. 静态连接的话,基本上就不需要向目标机器拷贝附加的文件了,方法如下: 1.修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就 不再需要VC的dll了. 2.工程->属性->配置属性->常规->MFC的使用,选择“在静态库中使用mfc”. 动态连接的话,需要在目标机器上拷贝mfc所依赖的动态库.根据你使用的VC版本不同而不同: VC6的话,一般包括mfc42.dll.msvcrt.dll.ms

无法启动此程序 ,因为计算机中丢失MSVCP120.dll

1.文件丢失问题 无法启动此程序 ,因为计算机中丢失MSVCP120.dll 具体如下图所示: 等dll文件丢失,可以去下载 DirectX修复工具去修复即可 http://www.pc6.com/softview/SoftView_57945.html 2.创建账户之后不知道密码或密码丢失问题 环境:mysql 5.7 winx64 mysqld --initialize 不显示初始化的账户与密码(其实已经生成了,MySQL与随机的一个密码) 解决方式:去data目录(在my.ini中指定了d

VS2013生成Release版本MFC程序在其他机器上运行

对于自己机器安装了VS开发环境,生成MFC的exe文件能够在自己机器上运行,复制到其他目标机器可能出现不能运行的情况.下面就个人经历将发布的两中情况简要说明. 1.工程属性中:配置属性-常规,MFC使用类型选择“在共享的DLL中使用MFC”:C/C++ - 代码生成-MFC的使用 选择“多线程DLL(/MD)”这种情况下,若直接将exe文件放到目标机器运行,则需要目标机器安装相应的开发平台.或者将生成exe程序的依赖dll文件复制到目标机器的程序运行目录下:若用到第三方库,也要复制相应的dll文

C++Qt5+win10+MSVC2015 64bit构建程序,Release编译成功后使用windeployqt.exe发布程序使用于win7出现缺少MSVCP140.dll!!!

在Windows/system32中找到MSVCP140.dll,放置发布的文件夹中,会出现 这表明程序运行缺少必要的dll,网上搜索解决方法,一般会推荐使用一些软件进行打包,但我使用windeployqt.exe进行软件发布!一样出现上述问题!一度怀疑是不是 win10下开发的软件在win7下不能运行,将源码包换到win7下构建发布一样的问题!!! 那么说明win7/10Release的软件都是可以运行的!但发布的程序到其他的电脑(均为64bit)点击SerialPort.exe,出现上图情况

Windows 7提示无法启动此程序,因为计算机中丢失 MSVCP120.dll

当启动程序时,提示出现如下错误: 通过重新注册该dll仍然无效的情况下: 可尝试DirectX修复工具(下载链接:http://www.crsky.com/soft/31471.html) 修复完成,并更新C++后,一般程序能正常启动.

VS2015编译后在其他平台缺失MSVCP140.DLL问题的修复

之前通过VS2015编译的程序在一些电脑上能跑,一些不能跑.试了好多台,能跑的应该是装了vs2015运行库的(不是程序),不能跑的都是缺失dll文件.网上有教程说把配置属性->C/C++->代码生成中的运行库设置为MT,即静态库.然而这样可能连编译都通不过了,报这样的错: 必须选择动态库. 只能把需要用到的dll都扔到一个文件夹里了.用dependcy.exe可以分析dll的依赖关系,经分析发现最主要的就是缺失MSVCP140.dll,但其依赖的的dll才是最让人头疼的. 可以看到他的依赖关系

简单C程序在IA-32 CPU上运行过程的分析

本文将通过编译器生成的汇编代码分析C程序在IA-32体系PC上的运行流程 实验环境: gcc 4.8.2 C语言程序的内存结构 C代码如下 int g(int x) { return x + 1; } int f(int x) { return g(x); } int main(void) { return f(2) + 3; } 使用编译命令gcc -S -O0 -o main.s main.c -m32编译出汇编文件,如下 g: pushl %ebp movl %esp, %ebp movl