解决在调用第三方dll时因为runtime library不一致导致调用失败的方法

来源:互联网 发布:广东11选5当前遗漏数据 编辑:程序博客网 时间:2024/05/22 14:28

情境重现: 我在自己写的一个dll中调用第三方dll。

调用方式:显式调用。

第三方dll是否完整: 不完整。 如何判断不完整: 使用dependency walker 打开第三方dll时出现提示:

打开dependency walker 下方的log window 获得如下图所示结果:

对于dll中的warning 我们可以不关注,但是若出现error 则会严重影响到该dll在其他环境中的使用。

有关error信息 side-by-side configuration contains errors 参看我的日志http://blog.csdn.net/xxxwrq/article/details/8738024 (该日志是基础,我们需要懂一些东西)。

接下来我们就去分析该dll.

使用vs2005打开该dll 。

打开RT_MANIFEST目录下的2 得到以下视图:

可以看到有两个依赖程序集(dependency assembly)  分别是 microsoft.vc80.crt 和 microsoft.vc80.mfc 其版本均为 8.0.50727.6195.  

因而我们去找到这两个文件。 

最终我们在以下路径C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT  ,

                                  C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC

分别找到了我们所需要的东西:

在side-by-side configuration error文章中我曾提到在manifest文件中会有一些提示之类的东东。

然后我们打开了该Microsoft.VC80.CRT.manifest 和 Microsoft.VC80.MFC.manifest文件 发现如下内容:

可以看到 Microsoft.VC80.CRT的版本号是 8.0.50608.0 与上文中提到的dll需要的版本号不一致。这个后果非常严重,直接导致dependency walker打开该dll时出现错误,以及在实际调用它时出现错误。  那我们的解决方法

    想办法升级该dll,或者ATL 使他们版本一致。 升级ATL的梦想变得奢侈。因而没萌实现,求实现。

  在尝试使用redist_x86.exe解决这个问题时依然没有解决。

在经历无数次失败后,   提出如下解决方案最终将问题解决:

     

1 将如下两文件夹下的所有文件打包复制到程序的执行目录下:

          C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT  ,

          C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.MFC

2 将该两个manifest中的version修改为第三方dll中依赖项的version号。

然后,问题终于解决了!!

  最终发现上述两个文件夹下的好多东西没有用,但是唯独不能缺少的东西是两个manifest以及一些dll。

 

 

 

 

 

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被铁钉扎伤了脚怎么办 风扇吹得肩膀疼怎么办 胳膊肌肉那块肿了怎么办 生完孩子臀部变宽怎么办 3岁宝宝肋骨外翻怎么办 胸肌正面不明显侧面看才有怎么办 小孩胸肌骨突出外翻怎么办 衣柜隔层板坏了怎么办 科三路线记不住怎么办 喂奶以后胸变小了怎么办 健身完肩膀缝疼怎么办 生过孩子胯部宽怎么办 无肩带文胸往下滑怎么办 内衣肩带老是往下滑怎么办 乳房发育一边大一边小怎么办 母猫乳房有硬块怎么办 19岁乳晕很大乳头很小怎么办 做完俯卧撑胳膊特别痛怎么办 电压低风扇转不动怎么办 小孩不配合康复锻炼怎么办 跑步机安全开关脱落怎么办 办健身卡贵了怎么办 跑步机安全锁丢了怎么办 老公的腿老是疼怎么办 跑步机钥匙丢了怎么办 跑步机磁铁丢了怎么办 瑜伽拉筋拉伤了怎么办康复 大腿拉筋拉伤了怎么办 肚子饿的咕咕叫怎么办 手表折叠扣松了怎么办? 手表链扣松了怎么办? 原车挡泥板碎了怎么办 车检通不过的车怎么办 车子被轻微刮了怎么办 车龙门架弯了怎么办 材料合格工地非说不合格怎么办 汽车翼子板撞过弄好缝隙大怎么办 手表秒针摔掉了怎么办 元征升降机泄压怎么办 自拍杆的杆子往下下滑怎么办 小狗被车压了一下拉血怎么办