gpt4 book ai didi

c++ - VS2010 中的 MFC100d.dll 问题

转载 作者:太空狗 更新时间:2023-10-29 20:42:44 27 4
gpt4 key购买 nike

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

enter image description here

最佳答案

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

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

但是,不可重新分发的调试库是随 Visual Studio 一起安装的,因此您的应用程序的调试版本应该可以在您用来开发和构建它的计算机上正常运行。这可能是您要用来调试它的同一台计算机。

Also I have set the Multi-threaded DLL (/MD) as the Runtime Library.

关于此需要注意的三个重要事项:

  1. 您必须确保为正确的构建配置(即“调试”)设置它。

  2. 不推荐这样做。应用程序的调试版本应使用运行时库的调试版本。他们在幕后做了很多事情来帮助你捕捉错误。这就是它们存在的原因。如果您不想依赖运行时库的调试版本,请编译和分发应用程序的发布版本。

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

    MFC 头文件测试是否定义了 _DEBUG 预处理器符号,以确定应该链接哪个版本的运行时库。由于 _DEBUG 是在一个文件中自动定义的调试版本,它链接到 MFC 库的调试版本。

    要改变它,您将需要做大量的手工劳动,在包含 MFC header 之前取消定义此符号,然后再重新定义它。

    或者,您可以静态链接到 MFC,这是项目属性中的一项设置。但是要小心:您最终会不经意地混合使用 CRT 的不同版本,这会让您陷入痛苦的境地。最好只发布发布版本并保留调试版本用于内部调试。

关于c++ - VS2010 中的 MFC100d.dll 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com