我在vs2010上有一个mfc c ++项目。
我能够在debug&发布模式,但是当我在调试模式下运行时,它会出现以下mfc100d.dll错误。我还安装了C ++运行时环境vcredist_x86.exe
但问题仍然没有解决。我还将多线程DLL(/ MD)设置为运行时库。
我该如何解决?
答案 0 :(得分:5)
DLL名称上的d
后缀表示它是运行时DLL的 debug 版本。事实证明,当您尝试运行应用程序的 debug 版本时,会发生问题。
默认情况下,调试构建链接到调试版本的运行时库。这些版本不可再发行,因此未使用可再发行软件包(vcredist_x86.exe
)进行安装。这通常不是问题:您不应该发送应用程序的调试版本。
然而,不可再发行的调试库随Visual Studio一起安装,因此应用程序的调试版本应该在您用于开发和构建它的计算机上正常运行。这可能与您将用于调试它的计算机相同。
此外,我已将多线程DLL(/ MD)设置为运行时库。
有三点需要注意:
您必须确保将其设置为正确的构建配置(即“Debug”)。
不建议这样做。应用程序的调试版本应使用运行时库的调试版本。他们在幕后做很多事情来帮助你捕捉bug。这就是他们存在的原因。如果您不希望依赖于运行时库的调试版本,请编译并分发应用程序的发布版本。
该开关会更改应用程序链接到的 C / C ++ 运行时库的版本。您收到错误消息的DLL是 MFC 运行时库。
MFC头测试是否定义_DEBUG
预处理器符号以确定应链接哪个版本的运行时库。由于_DEBUG
是在调试版本中自动定义的,因此它在链接中MFC库的调试版本。
要改变这种情况,您需要做大量的手工劳动,在包含MFC标题之前取消定义此符号,然后再重新定义它。
或者,您可以静态链接到MFC,这是项目属性中的设置。但是要小心这一点:你最终会无意中混合CRT的版本,这会让你处于一个受伤的世界。最好只发布发布版本并保留调试版本以进行内部调试。
答案 1 :(得分:0)
重新安装Microsoft SDK修复了此错误。