我们包含了一个 3rd Party lib+DLL,最近在安装时造成了很多麻烦。使用依赖步行者 http://www.dependencywalker.com/,我们发现dll本身引用了两个不同版本的
MSVCR80.DLL:
Version 8.0.50727.4053 and
Version 8.0.50727.42
替代文本http://img101.imageshack.us/img101/1734/dependencywalk2.jpg http://img101.imageshack.us/img101/1734/dependencywalk2.jpg
在大多数情况下,安装不会出现任何问题,即使我们没有分发这两个版本。但在许多情况下,我们的安装无法启动。然后我们在 Windows 系统事件日志中从 SideBySide 管理器中找到消息:“DLL 版本不匹配”。在大多数情况下,这个问题可以通过安装 .NET 框架来解决(尽管我们不使用它)。但现在我们遇到一个情况,这没有帮助。
我知道解决方案是将两个版本安装为共享程序集,但这似乎并不容易,除此之外,我更喜欢更简单的解决方案。有人知道解决方法吗?
我可以只使用一个版本的 Dll 吗?
EDIT:我现在尝试了基督徒的建议:
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 http://img340.imageshack.us/img340/4122/dependencywalk3.jpg
较低的 MSVCR80.DLL 是版本 ...42 的版本。我不明白这一点。为什么MSVCP80.DLL引用不同版本的MSVCR80.DLL比那除了它。这可能是 dependencywalker 的问题吗?
最好的选择是在应用程序安装程序包中提供所需的 DLL。至少使用您的第 3 方 DLL 所依赖的版本。
Microsoft 为其运行时 DLL (vcredist*) 提供独立安装程序。可以下载 Visual Studio 2005 的最新版本。这也是您的 DLL 链接的版本。您可以从安装程序中以静默方式启动可再发行软件包。
作为已安装系统的手动解决方法,只需在目标计算机上应用 redist 安装程序即可。
如果您选择此方法,则无需担心版本冲突,因为依赖于旧版本的应用程序将被重定向为始终使用最新版本。
为了更好地理解你可以看看这个MSDN 文章 http://msdn.microsoft.com/en-us/library/zebw5zk9%28VS.80%29.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)