win7 64位VS2012生成MSVCP110D.dll错误,调运行库为多线程/mtd

来源:互联网 发布:sql清除注册表 编辑:程序博客网 时间:2024/05/21 09:00


场景

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也可以正常运行


win7 64位下使用VS2012编译程序成功。在windows 2008服务器上运行成功。

原创粉丝点击