vc2008 sp1 manifest文件中依赖的mfc版本不对问题

总原因:


1. 我的exe程序编译时,内嵌了清单文件,而vc2008 sp1在清单文件生成上有bug,默认的清单依赖是 9.0.21022.8,实际需要至少是 9.0.30729.1


2. 我以前的修改是替换了mfc90.dll等dll为sp1的dll,这样子的修改实际上是延续了这个vs2008的bug,
    这样根据目标操作系统安装的vc2008运行库,
如果安装的是低于sp1版本(低于9.0.30729.1但大于等于9.0.21022.8)运行库,则系统在加载dll时,错误的根据exe内嵌的清单判断dll版本满足,从而使用了
错误版本的dll,报出无法定位xxx于mfcxxx.dll
如果没有安装任何vc2008运行库,系统无法根据内嵌清单找到要求的dll,则会加载当前目录下dll,运行正常
如果有安装大于等于9.0.30729.1的vc2008运行库,则满足正确清单的要求,运行正常
推测运维两台机器不同情况实际原因:
正常运行的机器上没有安装任何vc2008运行库,不正常运行的机器上面安装了非sp1的vc2008运行库,可以检查
c:\windows\winsxs\x86_microsoft.vc90.mfc_1fc8b3b9a1e18e3b_9.0.30729.4148_x-ww_a57c1f53\ 类似的目录


解决方法:
1. 修改exe生成,将嵌入清单取消,修改单独的manifest文件到正确的版本,并一起发布(没测试)
2. 或者都统一安装vc2008 sp1的运行库(以前安装了低版本的也没问题,因为高版本的安装程序会修改Policy,把低版本的引用指向高版本, http://blog.csdn.net/fanchuan0077/article/details/5627218)
3. 或者所有的机器都统一不安装任何低于vc2008 sp1的运行库
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值