Release 编译需要 mfc140ud.dll 和 vcruntime140d.dll
Posted
技术标签:
【中文标题】Release 编译需要 mfc140ud.dll 和 vcruntime140d.dll【英文标题】:mfc140ud.dll and vcruntime140d.dll needed for Release compilation 【发布时间】:2020-02-12 23:38:35 【问题描述】:我使用的是 Visual Studio 2019,这个项目来自 Visual Studio 的早期版本。当我尝试打开以发布模式编译的软件时,我收到有关缺少 mfc140ud.dll 和 VCRUNTIME140D.dll 的错误消息。据我了解,如果我在调试模式下编译,我应该只需要这些 DLL。这可能是什么原因造成的?
【问题讨论】:
您的项目设置可能不正确。打开您的项目设置以确保发布版本链接到库的非调试版本。 您的代码或您链接的库都依赖于语言运行时的调试版本。确保链接到语言运行时的发布版本,和您使用的任何库的发布版本。 【参考方案1】:就我而言,您分发的是 DEBUG 版本的应用程序。“mfc140ud.dll”和“vcruntime140d.dll”的“d”后缀表明它正在寻找 MFC 库的 DEBUG 版本。
我建议你检查你的项目设置。
如果您希望您的应用程序运行不依赖于 mfc140u.dll,您可以简单地将您的应用程序与 MFC 静态链接。
【讨论】:
这并没有解决核心问题,也不推荐。一旦静态链接到库,就不能再跨 DLL 边界交换 CRT 对象。 Potential Errors Passing CRT Objects Across DLL Boundaries 有详细信息。我明白你想帮忙。但是分发不明智的建议是不好的,不管你如何分割它。从名称中带有 "MSFT" 的用户帐户发布此信息,可将其获得额外可信度的几率加倍。以上是关于Release 编译需要 mfc140ud.dll 和 vcruntime140d.dll的主要内容,如果未能解决你的问题,请参考以下文章
对使用共享 MFC 核心 DLL 的 MFC 项目使用 CTrace::SetLevel