我在vs2010上有一个mfc c++项目。
我可以在调试和 Release模式下进行构建,但是在 Debug模式下运行它时,会出现以下mfc100d.dll错误。我还安装了C++运行时环境vcredist_x86.exe,问题仍然没有解决。另外,我已将多线程DLL(/ MD)设置为运行时库。
我如何解决它 ?

最佳答案

DLL名称上的d后缀表示它是运行时DLL的调试版本。您说问题是在尝试运行应用程序的调试版本时发生的,这一事实得到了证实。

默认情况下,出于充分的原因,debug构建会链接到运行时库的调试版本。这些版本不可再发行,因此不会与可再发行软件包(vcredist_x86.exe)一起安装。通常这不是问题:您不应该发布应用程序的调试版本。

但是,不可再分发的调试库随Visual Studio一起安装,因此应用程序的调试版本应在用于开发和构建它的计算机上正常运行。您可能会使用同一台计算机对其进行调试。



需要注意的三件事:

  • 您必须确保将其设置为正确的构建配置(即“调试”)。
  • 不建议这样做。应用程序的调试版本应使用运行时库的调试版本。他们在幕后做了很多事情,可以帮助您发现错误。这就是为什么它们存在。如果您不希望依赖于运行时库的调试版本,请编译并分发应用程序的Release版本。
  • 该开关更改您的应用程序链接到的C / C++运行时库的版本。您收到错误消息的DLL是MFC运行时库。

    MFC header 测试是否定义了_DEBUG预处理程序符号,以便确定应链接到哪个版本的运行时库。由于_DEBUG是在调试版本中自动定义的,因此它在MFC库的调试版本中进行了链接。

    要更改它,您将需要做很多手工工作,在包含MFC header 之前先取消定义此符号,然后再重新定义它。

    或者,您可以静态链接到MFC,这是项目属性中的设置。但是,请务必小心:您最终会无意间混用CRT的版本,这可能会给您带来痛苦。最好只发布发行版本并保留调试版本以进行内部调试。
  • 08-25 08:48
    查看更多