场景
VS2012编译的动态库,拷贝到安装VS05的机器上,调用的过程中出错如下:
无法启动此程序,计算机丢失MSVCP110D.dll。尝试重新安装该程序以解决此问题
环境
VS2012和VS2005中项目属性,C/C++选项卡下代码生成>运行时库:多线程调试DLL(MDd)默认的调试版本会指定该运行库配置,减少dll的体积
解析
出错原因是编译动态库的时候,运行时库选择了多线程调试DLL(MDd),程序运行时,缺少了MSVCP110D.dll运行时库。VS05携带的运行时库是msvcr80.dll,在不同的编译器环境下,编译出来的dll,会依赖不同版本的运行时库,主要是VS不同的版本使用的VC库是不一样的
补充
M后面的T或者是D,实际上分别代表了静态库static,动态库dymanic
当修改动态库项目的运行时库为MT或者MTd,其他项目进行引用的时候(该项目也必须设置成相同的运行时库),这样子编译出来的程序,只会依赖操作系统中的核心dll组件(kernel32.dll,
gdi32.dll,shell32.dll),拷贝到同一个版本的系统,即使没有安装VS也可以正常运行
本文转自fengyuzaitu 51CTO博客,原文链接:http://blog.51cto.com/fengyuzaitu/1730913,如需转载请自行联系原作者