我们有一个第三方的lib + DLL,最近引起了不少的安装麻烦。 使用dependencywalker ,我们发现,DLL本身指的两个不同版本
MSVCR80.DLL:
Version 8.0.50727.4053 and
Version 8.0.50727.42
替代文字http://img101.imageshack.us/img101/1734/dependencywalk2.jpg
在大多数情况下,安装是没有问题的,即使我们没有发布两个版本的。 但是,在许多情况下,我们的安装只是不启动。 然后,我们发现从SideBySide马槽Windows系统事件日志消息:“DLL的版本不匹配”。 在大多数情况下,再次这个问题可以通过安装.NET Framework(尽管我们不使用这个)来解决。 但是现在我们有了这个地方没有帮助的情况下。
我知道,一个解决办法是,安装两个版本的共享组件,但似乎不是容易的,除此之外我宁愿一个更简单的解决方案。 是否有人知道一个解决方法吗?
我能以某种方式使用DLL的只有一个版本?
编辑:我现在试着cristians建议:
D:\Develop\LEADTOOLS15\patch_maifest>mt.exe -inputresource:ltkrn15u.dll;#1 -out:old.manifest
Microsoft (R) Manifest Tool version 5.2.3790.2075
Copyright (c) Microsoft Corporation 2005.
All rights reserved.
mt.exe : general error c101008c: Failed to read the manifest from the resource of file "ltkrn15u.dll". Ressource not found.
如果我和完整路径查看DLL的依赖,我看到以下内容: 替代文字http://img340.imageshack.us/img340/4122/dependencywalk3.jpg
较低的MSVCR80.DLL是一个枝条版本... 42。 我不明白这一点。 为什么MSVC P 80.DLL是指除它之外的一个不同的版本MSVC [R 80.DLL的。 是,也许dependencywalker的问题?