VS2010中的MFC100d.dll问题

foo*_*bar 3 c++ mfc visual-studio-2010 visual-c++

我在vs2010上有一个mfc c ++项目.我能够在调试和发布模式下构建它,但是当我在调试模式下运行它时,它会给出以下mfc100d.dll错误.我还安装了C++运行时环境vcredist_x86.exe仍然没有修复问题.我还将多线程DLL(/ MD)设置为运行时库.我如何解决它 ?

在此输入图像描述

Cod*_*ray 5

dDLL名称的后缀表示它是运行时DLL 的调试版本.事实证明,当您尝试运行应用程序的调试版本时,会发生问题.

默认情况下,调试构建链接到运行时库的调试版本.这些版本不可再发行,因此无法使用可再发行组件包(vcredist_x86.exe)进行安装.这通常不是问题:您不应该发送应用程序的调试版本.

但是,不可再发行的调试库随Visual Studio一起安装,因此应用程序的调试版本应该在您用于开发和构建它的计算机上正常运行.这可能与您将用于调试它的计算机相同.

我还将多线程DLL(/ MD)设置为运行时库.

关于此的三个重要事项:

  1. 您必须确保将其设置为正确的构建配置(即"调试").

  2. 不建议这样做.应用程序的调试版本应使用运行时库的调试版本.他们在幕后做很多事情来帮助你捕捉bug.这就是他们存在的原因.如果您不希望依赖于运行时库的调试版本,请编译并分发应用程序的Release版本.

  3. 该开关更改应用程序链接到的C/C++运行时库的版本.您收到错误消息的DLL是MFC运行时库.

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

    要改变这种情况,您需要做大量的手工劳动,在包含MFC标题之前取消定义此符号,然后再重新定义它.

    或者,您可以静态链接到MFC,这是项目属性中的设置.但是要小心这一点:你最终会无意中混合CRT的版本,这会让你处于一个受伤的世界.最好只发布发布版本并保留调试版本以进行内部调试.