The Side-by-Side configuration information for "c:\xxxx.DLL" contains errors. 

最近开发的时候碰到一个心累的问题:由于使用到第三的SDK,而且该SDK有一定的历史,

在开发机上运行的时候,能够正常运行,但是部署到客户的设备时却报,无法正常运行程序



这种错误一般都是由于缺 msvcr**.dll msvcp**.dll,

这个时候一般直接安装对应的支持库即可,推荐一个比较全的

Microsoft Visual C++ Redistributable Package合集(2005~2010)

http://download.csdn.net/detail/inaqui/3995341


但是,安装完对应的支持库后,发现并不能解决问题

使用depends对程序的依赖项进行检查,提示以下ERROR

Error: The Side-by-Side configuration information for "c:\program files (x86)\common files\XXXX.DLL" contains errors. sxstrace.exe (14001).


一开始以为是x64和x32的支持库安装的有问题,卸载后,只安装x86版本的支持库,仍旧无法工作。


于是使用sxstrace.exe跟踪程序的运行,却发现该SDK下的不同dll竟然依赖不同版本的MSVCR90.dll MSVCP90.dll。

启动cmd控制台,设置日志地址

sxstrace.exe  Trace  -logfile:C:\MySxSTrace.log


在新的控制台中执行程序


提示错误后关闭即可

然后在原来运行sxstrace.exe的控制台中敲回车

并执行命令

sxstrace.exe  Parse  -logfile:C:\MySxSTrace.log  -outfile:C:\MySxSTrace.txt



日志内容如下:



这是由于找不到9.0.30729.4148版本的msvcr90.dll等支持库,但是我确实已经把对应版本的支持库拷贝到当前目录和系统目录下,发现动态库不仅仅是拷贝到对应目录才能运行。


通过在观察日志,发现微软有个叫manifest的东西,来辅助完成对应的dll加载,在该日志中系统并没有从当前目录下去读取对应的dll,而是先去找manifest文件。

在c盘windows的winsxs文件夹下存了大量的manifest文件以及对应的msvc***.dll文件

在本次使用的sdk中只找到其中一个版本的支持库,需要再安装另一个支持库。


需要安装的支持库


通过搜索发现需要安装

Microsoft visual C++2008 Redistributable-x86 9.0.30729.4148

这个版本的支持库,其实安装vs的时候已经装过了,但在客户机里没有对应的安装包。
从微软官网下载

安装完后程序正常运行。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值