运行时缺msvcp100d.dll和msvcr100d.dll

11111122222


0. 给朋友发了个DEMO,收到提示:丢失 msvcr100d.dll

1. 一看是运行库文件,赶紧让朋友下载并安装vc++ 2010 redistribution,朋友反馈还是提示丢失这个dll文件

2. 把我本地的这个dll拷贝到他机器里,提示成功

3. 太奇怪了啊,这玩意就是vc++运行库文件啊,为啥装了redistribution还不成呢

4. 我注意到了这个文件名的100后面带着一个d字,让我想起了debug~

5. 在VC里面找设置,终于发现了:Property->C/C++->Code Generation->Runtime Library

6. 总结:

msvcr100d.dll,这个dll对应的是C++编译器的Code Generation的Runtime Library版本的设置。默认vs2010会把他设置成Multi-threaded Debug DLL (/MDd),这时使用的就是msvcr100d.dll。正常发布时应该是设置为Multi-threaded (/MT)或/MD,这时就会去使用vc++ 2010 redistribution里的dll了。带d的DLL含有living debug所需的调试功能,但不在redistribution里。

7. 另外,直接修改编译模式从Debug改为Release也会修改这个配置。但别忘记了把Release下的VC++ Dictionary里的值和Link Input重新配置哦,这些配置也同样不会从Debug里复制过来。




最近开发个程序,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

解决的办法

Release版本

Visual Studio 2010, 打开菜单中的项目》属性:
运行时缺msvcp100d.dll和msvcr100d.dll_第1张图片
打开 配置属性 | C/C++ | 代码生成
找到 运行库.将 多线程DLL(/MD) 改为 多线程(/MT)
运行时缺msvcp100d.dll和msvcr100d.dll_第2张图片
重新编译.
运行时缺msvcp100d.dll和msvcr100d.dll_第3张图片

Debug版本

Visual Studio 2010, 打开菜单中的项目》属性:
运行时缺msvcp100d.dll和msvcr100d.dll_第4张图片
打开 配置属性 | C/C++ | 代码生成
找到 运行库.将 多线程调试DLL(/MDd) 改为 多线程调试(/MTd)
运行时缺msvcp100d.dll和msvcr100d.dll_第5张图片
重新编译.
运行时缺msvcp100d.dll和msvcr100d.dll_第6张图片

你可能感兴趣的:(C++)