【问题标题】:C++ MFC Debug Assertion Failed! in static MFCC++ MFC 调试断言失败!在静态 MFC 中
【发布时间】:2012-05-19 18:28:02
【问题描述】:
Debug Assertion Failed!
File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\objcore.cpp Line: 40

当我尝试使用调试配置 - Use MFC in a Static LibraryDynamic Library (.dll) 来 DoModal(或创建)MFC 窗口时遇到了这个问题。在发布配置上一切正常,但我无法调试 dll。微软 VS 2010

【问题讨论】:

    标签: c++ debugging mfc assertion


    【解决方案1】:

    在发布版本中不会发生这种情况,因为代码使用了在发布版本中没有意义的 ASSERT。 ASSERT 是一个调试工具。

    您可能会感到惊讶,但 MFC 不使用 Windows 模式对话框。调用 Create 或 DoModal 创建 windows 无模式对话框。 MFC 通过禁用父窗口(如果有)来实现模式,并为对话框提供类似于应用程序消息循环的自己的消息处理循环。

    这就是为什么无论使用 Create 还是 DoModal 都会得到相同的结果。

    是否在对话框显示之前发生?

    您在帖子中显示的错误表明您在应用程序代码的某处尝试使用尚未实例化且在对话框初始化期间为 NULL 的对象。它似乎没有通过 IsKindOf 检查。

    是否可以压缩您的项目并将其发布以供我们调试?

    【讨论】:

    • 它是现有应用程序的 dll 扩展,一步一步我在做什么; 1、新建对话资源; 2. 双击对话框体创建.h .cpp 文件; 3.InitCommonControls()在dll加载函数中; 4. 然后MyDialog dialog1; 5. dialog1.DoModal(); 就是这样 当我在对话框出现之前调用 DoModal 时它崩溃了。
    • 发现问题,忘记AFX_MANAGE_STATE(AfxGetStaticModuleState());
    • 那去哪儿了?我也遇到了同样的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 2012-12-28
    • 1970-01-01
    相关资源
    最近更新 更多