【发布时间】:2016-08-23 06:53:07
【问题描述】:
我正在使用 VS2008 创建我的应用程序的调试版本。 编译后,当我尝试运行应用程序时,我得到了著名的“MSVCR90.dll is missing”错误。
最初我尝试将 MSVCR90.dll 从 winsxs 文件夹复制到应用程序文件夹中,但又遇到另一个著名错误“应用程序尝试错误地加载 C 运行时库”
最后我尝试检查应用程序的依赖关系,它发现了一些奇怪的东西。有两个 MSVCR90 库作为应用程序的依赖项 - msvcr90d.dll 和 msvcr90.dll。我不是这个库的非调试版本如何进入我的应用程序的。
我可能做错了什么。提前致谢。
这是一张图片:
【问题讨论】:
-
您可以使用 Dependency Walker 查看您的应用程序正在从
msvcr90.dll导入哪些函数 -
猜猜:你正在链接一个在发布模式下构建的外部库。
-
我试图将 MSVCR90.dll 从 winsxs 文件夹复制到应用程序文件夹中 - 不要这样做 - 通常最好使用安装运行时安装程序。 有两个 MSVCR90 库作为应用程序的依赖项 - msvcr90d.dll 和 msvcr90.dll - 有人(您或静态库)针对运行时的发布版本构建了一些东西。您将需要遍历每个库和项目才能找到它。没有足够的细节来诊断运行时不匹配的根源。
-
@Ari0nhh 我尝试这样做,但依赖项步行器除了“打开指定文件时出错”之外没有显示任何内容 - 我将上传它的照片。
-
@RichardCritten 也许你是对的。但是有数百个库(我们在不同的文件夹中都有库的调试/发布版本)。有什么工具可以用吗?