场景shell
VS2012编译的动态库,拷贝到安装VS05的机器上,调用的过程当中出错以下:多线程
没法启动此程序,计算机丢失MSVCP110D.dll。尝试从新安装该程序以解决此问题ide
环境spa
VS2012和VS2005中项目属性,C/C++选项卡下代码生成>运行时库:多线程调试DLL(MDd)默认的调试版本会指定该运行库配置,减小dll的体积操作系统
解析线程
出错缘由是编译动态库的时候,运行时库选择了多线程调试DLL(MDd),程序运行时,缺乏了MSVCP110D.dll运行时库。VS05携带的运行时库是msvcr80.dll,在不一样的编译器环境下,编译出来的dll,会依赖不一样版本的运行时库,主要是VS不一样的版本使用的VC库是不同的调试
补充编译器
M后面的T或者是D,实际上分别表明了静态库static,动态库dymanicit
当修改动态库项目的运行时库为MT或者MTd,其余项目进行引用的时候(该项目也必须设置成相同的运行时库),这样子编译出来的程序,只会依赖操做系统中的核心dll组件(kernel32.dll,编译
gdi32.dll,shell32.dll),拷贝到同一个版本的系统,即便没有安装VS也能够正常运行