DLL名称上的d后缀表示它是运行时DLL的调试版本.事实证明,当您尝试运行应用程序的调试版本时,会发生问题.
默认情况下,调试构建链接到运行时库的调试版本.这些版本不可再发行,因此未使用可再发行组件包(vcredist_x86.exe)进行安装.这通常不是问题:您不应该发送应用程序的调试版本.
但是,不可再发行的调试库随Visual Studio一起安装,因此应用程序的调试版本应该在您用于开发和构建它的计算机上正常运行.这可能与您将用于调试它的计算机相同.
Also I have set the Multi-threaded DLL (/MD) as the Runtime Library.
关于此的三个重要事项:
>您必须确保将其设置为正确的构建配置(即“Debug”).
>不建议这样做.应用程序的调试版本应使用运行时库的调试版本.他们在幕后做很多事情来帮助你捕捉bug.这就是他们存在的原因.如果您不希望依赖于运行时库的调试版本,请编译并分发应用程序的Release版本.
>该开关更改应用程序链接到的C/C++运行时库的版本.您收到错误消息的DLL是MFC运行时库.
MFC头测试是否定义_DEBUG预处理器符号以确定应链接哪个版本的运行时库.由于_DEBUG是在调试版本中自动定义的,因此它在MFC库的调试版本中进行链接.
要改变这种情况,您需要做大量的手工劳动,在包含MFC标题之前取消定义此符号,然后再重新定义它.
或者,您可以静态链接到MFC,这是项目属性中的设置.但是要小心这一点:你最终会无意中混合CRT的版本,这会让你处于一个受伤的世界.最好只发布发布版本并保留调试版本以进行内部调试.