“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”文件所对应的文件和路径在计算中都不存在,前不着村,后不着店,很难调试。幸好有了互联网,往搜索上敲入错误信息,回车,解决方法就能顺藤摸瓜的快速找到。互联网,伟大!

猜你喜欢

转载自blog.csdn.net/ennaymonkey/article/details/80725816