我在vs2010上有一个mfc c++项目。
我可以在调试和 Release模式下进行构建,但是在 Debug模式下运行它时,会出现以下mfc100d.dll错误。我还安装了C++运行时环境vcredist_x86.exe
,问题仍然没有解决。另外,我已将多线程DLL(/ MD)设置为运行时库。
我如何解决它 ?
最佳答案
DLL名称上的d
后缀表示它是运行时DLL的调试版本。您说问题是在尝试运行应用程序的调试版本时发生的,这一事实得到了证实。
默认情况下,出于充分的原因,debug构建会链接到运行时库的调试版本。这些版本不可再发行,因此不会与可再发行软件包(vcredist_x86.exe
)一起安装。通常这不是问题:您不应该发布应用程序的调试版本。
但是,不可再分发的调试库随Visual Studio一起安装,因此应用程序的调试版本应在用于开发和构建它的计算机上正常运行。您可能会使用同一台计算机对其进行调试。
需要注意的三件事:
MFC header 测试是否定义了
_DEBUG
预处理程序符号,以便确定应链接到哪个版本的运行时库。由于_DEBUG
是在调试版本中自动定义的,因此它在MFC库的调试版本中进行了链接。要更改它,您将需要做很多手工工作,在包含MFC header 之前先取消定义此符号,然后再重新定义它。
或者,您可以静态链接到MFC,这是项目属性中的设置。但是,请务必小心:您最终会无意间混用CRT的版本,这可能会给您带来痛苦。最好只发布发行版本并保留调试版本以进行内部调试。