我们包含了一个最近在安装中引起很多麻烦的第三方 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 框架(尽管我们不使用它),可以再次解决这个问题。但现在我们有一个案例,这没有帮助。
我知道解决方案是将两个版本安装为共享程序集,但这似乎并不容易,除此之外我更喜欢更简单的解决方案。有人知道解决方法吗?
我能以某种方式只使用一个版本的 Dll 吗?
编辑: 我现在尝试了克里斯蒂安的建议:
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 依赖项,我会看到以下内容: alt text http://img340.imageshack.us/img340/4122/dependencywalk3.jpg
较低的 MSVCR80.DLL 是版本 ...42 的那个。我不明白这一点。为什么 MSVC P 80.DLL 引用的 MSVC R 80.DLL 版本与除此之外的版本不同。这可能是dependencywalker的问题吗?