1. 程式人生 > >“debug assertion failed f:\dd\vctools\vb7libs\ship\atlmfc\src\mfc\dlgdata.cpp line 40”執行時錯誤的解決方法

“debug assertion failed f:\dd\vctools\vb7libs\ship\atlmfc\src\mfc\dlgdata.cpp line 40”執行時錯誤的解決方法

近期在優化一個用MFC開發的應用程式時,修改和刪除了專案中資原始檔對話方塊的一些控制元件,修改後可以編譯生成,但是執行的時候發生了一個非常莫名其妙的錯誤,“debug assertion failed f:\dd\vctools\vb7libs\ship\atlmfc\src\mfc\dlgdata.cpp line 40”,程式奔潰退出。


網上一搜,很多人都遇到這個問題,原因是:

在對話方塊介面中刪除了一些控制元件,但在DoDataExchange方法中沒有刪除這些控制元件對應的程式碼,將已經刪除控制元件對應的巨集對映程式碼刪掉即可。
void CQzone2WPDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_USERLIST, m_userList); //刪除這行類似的程式碼即可。
}

還有一種說法是資原始檔resource.h中有控制元件的ID相同,將其改成不同也可。

這種錯誤如果是在沒有網際網路的時候,不知道要耗費多少程式設計師的時間和精力,“f:\dd\vctools\vb7libs\ship\atlmfc\src\mfc\dlgdata.cpp”檔案所對應的檔案和路徑在計算中都不存在,前不著村,後不著店,很難除錯。幸好有了網際網路,往搜尋上敲入錯誤資訊,回車,解決方法就能順藤摸瓜的快速找到。網際網路,偉大!