2012-05-19 105 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