【发布时间】:2021-06-25 18:48:11
【问题描述】:
我正在将旧的 MFC 应用程序从 Visual Studio 2008 移植到 Visual Studio 2019。
在此过程中,已将旧的 DLL 库合并到源代码中,以删除开发中的库构建步骤。
现在,在默认的 Debug 配置下调试时,该程序可以完美运行;但是,在发布配置中我得到:
代码执行无法继续,因为找不到
MSVCR90.dll
我想这意味着MSVCR90d.dll在调试模式下成功找到,但由于某种原因找不到DLL的发布版本。
我已经尝试了下载 Visual C++ 运行时可再发行组件、更改为静态链接运行时库以及在 Google 的第一个结果中找到的大多数其他常规步骤。
Visual Studio 的所有中间版本都本地安装在开发机器上(2008、2010、2015、2017 和 2019)。
还有什么我可以尝试的吗?
【问题讨论】:
-
查找旧代码中引用该 DLL 的任何部分并删除该引用。较新的 VS 版本,使用较新版本的编译器,应使用适当匹配的运行时 DLL。
-
在启动时使用 procmon.exe。找出加载程序在哪里寻找文件。找出除了 msvcr90.dll 之外它无法加载的文件。验证 msvcr90.dll 是否确实存在于您的路径中。
-
@satazero 1) Visual Studio 对每个配置都有不同的设置。因此,也许您从调试设置中删除了对这些库的链接,而不是从发布中删除。 2)
#ifdef DEBUG ... #endif是一种结构,有时会被使用(以及它的#ifndef DEBUG对应物)。 -
@thomiel 这指出了一个明显的错误。
Release配置中仍有一个 DLL 静态链接,现在已集成到实际源代码中。非常感谢,请发表答案,我会接受! -
@satazero 好的,我添加了评论作为答案。
标签: c++ visual-studio mfc