2012-05-19 79 views
0
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。 MS VS 2010C++ MFC调试断言失败! in static MFC

回答

1

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

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

因此,无论使用Create还是DoModal,tou都具有相同的结果。

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

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

是否可以将您的项目压缩并发布给我们进行调试?

+0

它是现有应用程序的dll扩展,一步一步的我在做什么; 1.创建新的对话框资源; 2.双击对话框体创建.h .cpp文件; 3.在dll加载函数中'InitCommonControls()'; 4.然后'MyDialog dialog1;'5.'dialog1.DoModal();'这就是全部 当我在对话框显示之前调用DoModal时它崩溃。 – user1112008

+0

发现问题,忘了'AFX_MANAGE_STATE(AfxGetStaticModuleState());' – user1112008

+2

这是哪里去的?我有同样的问题 – CodyBugstein