转帖msvcp100.dll和msvcr100.dll
Posted jinanxiaolaohu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转帖msvcp100.dll和msvcr100.dll相关的知识,希望对你有一定的参考价值。
VS发布软件时去除msvcp100.dll和msvcr100.dll图解说明
https://blog.csdn.net/yu__jia/article/details/82753262
msvcp、msvcr、vcomp140.dll属于VC++2015版
msvcp、msvcr、vcomp120.dll属于VC++2013版
msvcp、msvcr、vcomp110.dll属于VC++2012版
msvcp、msvcr、vcomp100.dll属于VC++2010版
msvcp、msvcr、vcomp90.dll属于VC++2008版
---------------------
作者:安静平和
来源:CSDN
原文:https://blog.csdn.net/CNHK1225/article/details/76183950
版权声明:本文为博主原创文章,转载请附上博文链接!
最近开发个程序,Copy到虚拟机环境中测试时提示缺少msvcr100.dll,于是想到编译时设置选项去除依赖。
什么是 msvcr100.dll
MS = Microsoft
V = Visual
C = C program language
R = Run-time
100 = Version
什么是 msvcp100.dll
MS = Microsoft
V = Visual
CP = C++
100 = version
VS中的多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)的区别
一种语言的开发环境往往会附带有语言库,这些库就是对操作系统的API的包装,我们也称这些语言库为运行库
对于MSVC的运行库(CRT),按照静态/动态链接,可以分为静态版和动态版;按照调试/发布,可以分为调试版本和发布版本;按照单线程/多线程,可以分为单线程版本和多线程版本(但是目前VS中已不提供单线程版本了)
在调试模式下,使用调试运行库:多线程调试(/MTd)、多线程调试DLL(/MDd)
在发布模式下,使用发布运行库:多线程(/MT)、多线程DLL(/MD)
调试模式下运行库带d,但发布模式不带。调试与发布的区别在于,发布模式省略了程序的调试信息,简单来说就是删除了调试模式下的用于调试的内容,所以一般情况下,发布模式下生成的可执行文件的大小比调试模式下生成的要小
静态链接:多线程(/MT)、多线程调试(/MTd)
动态链接:多线程DLL(/MD)、多线程调试DLL(/MDd)
动态链接为D,静态链接为T。两者的区别在于,静态链接将程序所依赖的运行库集成到了可执行文件中,可执行文件运行时不再需要运行库;动态链接没有把程序所依赖的运行库集成到可执行文件中,可执行文件运行时需要运行库。由于静态链接将程序所依赖的运行库集成到了可执行文件中,一般情况下,生成的可执行文件的大小大于动态链接生成的
对这四种运行库的选在位于VS的项目属性-》C/C++-》代码生成-》运行库:
解决的办法
Release版本
Visual Studio 2010, 打开菜单中的项目》属性:
打开 配置属性 | C/C++ | 代码生成
找到 运行库.将 多线程DLL(/MD) 改为 多线程(/MT)
重新编译.
Debug版本
Visual Studio 2010, 打开菜单中的项目》属性:
打开 配置属性 | C/C++ | 代码生成
找到 运行库.将 多线程调试DLL(/MDd) 改为 多线程调试(/MTd)
重新编译.
以上是关于转帖msvcp100.dll和msvcr100.dll的主要内容,如果未能解决你的问题,请参考以下文章
vs2010发布时去除msvcp100 dll和msvcr100 dll图解说明
我的程序无法在没有 VS MSVCR100.dll 的计算机上运行
0x5746723c (msvcr100d.dll) 处最可能的异常: 0xC0000005: 读取位置 0xccccccc8 时发生访问冲突