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

本文探讨了使用VS2012编译的动态库在VS2005环境中运行时遇到的MSVCP110D.dll缺失问题。分析了不同编译器版本导致的运行时库不兼容原因,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


场景

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服务器上运行成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值