dlgdata.cpp line 40 断言失败

来源:互联网 发布:java的编译命令是哪个 编辑:程序博客网 时间:2024/05/28 15:47

在VS2015运行一个C++ 程序,出现下图错误:
这里写图片描述

一看到这个,我头都大了。关键是 f:/dd/vctools/vc7libs/ship/atlmfc/src/mfc/dlgdata.cpp 这个路径根本在我计算机不存在。其实是在安装目录下,通过搜索即可找到:
D:\Program Files (x86)\Microsoft Visual Studio 14.0\VCatlmfc/src/mfc/dlgdata.cpp

搜到后,用工具打开该文件,然后在打开的记事本上点击:查看->状态栏,然后定位到40行:
这里写图片描述

总算知道大概了,在谷歌上搜索
http://blog.csdn.net/zipper9527/archive/2009/06/19/4282229.aspx
里面提到“我认为原因是你为一个控件进行变量绑定,后来你觉得这个控件没用了,就直接在对话框上把控件删除了,而这里的关联代码却没删除”。

关键是我不知道我的nIDC 是多少? 但是我知道bug发生在哪儿:
DoDataExchange() ,没错就是他了,把断电设在这,开始逐步找是那个变量吧,有点小激动有没有!!!
找到相关的语句,可以注释掉,也可以重新添加变量对应的资源。
例如:
//DDX_Control(pDX, IDC_Edit1, m_xxxx);
并把IDC_Edit1注释掉,m_xxxx 也注释掉,

再次运行,程序又回来了,哈哈!

结论:以后删除控件前,先取消对控件的变量绑定,然后再删除控件。

0 0
原创粉丝点击