程序无法启动,因为您的计算机缺少mfc120ud.dll文件。

5
我正在尝试在另一台计算机上运行我最近使用VS2013编译的应用程序。运行时出现以下错误提示: “程序无法启动,因为mfc120ud.dll文件丢失。请尝试重新安装该程序以解决此问题。” 我从网上搜索了mfc120ud.dll文件,但没有任何结果。我将这个dll文件从开发该应用程序的计算机复制/粘贴到其他计算机的system32中,但是却出现了以下提示: “C:\Users\u\System32\mfc120ud.dll 不是设计用于 Windows 运行的软件,或包含错误。尝试使用原始安装介质重新安装该程序,或联系系统管理员或软件供应商提供支持。” 由于我正在开发的计算机是64位的,而另一台计算机是32位的,并且我已经从System32复制/粘贴了mfc120ud.dll版本,那么我该如何解决这个问题呢?

2
这是MFC的调试版本,只有安装了VS的机器上才会出现。如果要部署调试版本,则使用C++没有太大意义。应该部署Release版本,并部署运行时依赖项,如mfc120u.dll等。如果您不知道需要什么,则可以使用此安装程序 - Hans Passant
你能否发布应用程序的代码,这样我就可以在我的系统上运行它,看看是否能够重现错误。 - 06needhamt
@HansPassant,抱歉我没有理解你的意思。我需要在测试我的应用程序的计算机上安装那个安装程序吗? - Lucie kulza
4个回答

9
程序无法启动,因为您的计算机缺少mfc120ud.dll文件。尝试重新安装程序以解决此问题。这是MFC的一个调试库,您在构建程序的调试版本时需要链接该库。它存在于您的开发人员计算机上,但您不能重新分发它。您需要执行以下操作:1. 为发布构建项目。这将链接到任何运行时DLL的发布版本。2. 在计划运行程序的任何计算机上安装MSVC和MFC可重定向依赖项。另一种选择是将运行时DLL安装在与可执行文件相同的目录中。您不允许这样做。回溯您的步骤并撤消此操作。

1
但我确定我正在运行我的应用程序的发布版本! - Lucie kulza
2
你在问题中提供的信息直接与那种信念相矛盾。 - David Heffernan

1
检查您是否在预处理器定义中意外定义了_DEBUG。
我曾经在从调试构建复制设置时遇到过同样的错误。

2
好的,这应该是对这个问题的答案。我在谷歌上找到了这个,因为我遇到了完全相同的问题,但我已经自己解决了。我正在编译一个在Release配置文件中设置了_DEBUG标志的应用程序。 - manatails

0
当我遇到类似的问题时,首先安装了VS 2013 C++可再发行包vcredist_x86.exe和vcredist_x64.exe(https://support.microsoft.com/en-us/help/3138367/update-for-visual-c-2013-and-visual-c-redistributable-package),然后确定文件需要哪些依赖项:
c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>dumpbin.exe /dependents "C:\Temp\MyLibrary.dll"

Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file C:\Temp\MyLibrary.dll

File Type: DLL

  Image has the following dependencies:

    mfc120d.dll
    MSVCR120D.dll
    KERNEL32.dll
    USER32.dll
    OLEAUT32.dll
    mscoree.dll

  Image has the following delay load dependencies:

    MyLibraryCoreD.dll

  Summary

        5000 .data
        2000 .nep
        1000 .pdata
       4E000 .rdata
        1000 .reloc
        1000 .rsrc
       10000 .text

c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin>

下一步,我搜索了注册表,但没有找到mfc120d.dll,只有mfc120.dll和mfc120u.dll(参见https://serverfault.com/questions/576831/how-do-i-know-if-a-dll-is-registered)。因此,我放弃使用调试版本,改用使用mfc120.dll的发布版本,这样应用程序就能正常工作了。

0

对我来说,我使用VS2013 xp模式构建了项目。然后在Windows XP系统上部署。然后我得到了mfc120ud.dll缺失的错误。 我安装了vcredist.exe for vs2013,这解决了问题。 我能够运行我的MFC应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接