原来的网址: http://zhaostudy2.blog.163.com/blog/static/135350205201010395119919/
用vc++6.0写MFC程序时,偶尔会出现这样一个现象:用ClassWizard给对话框上的控件关联变量后,程序编译连接都没报错,但是无法运行。调试一下出现这样一个错误:Unhandled exception in videoSynopsis.exe: 0xC0000005: Access Violation。这个问题困扰了我1个小时,在网上查询了很多论坛帖子和博客文章,无果。自己做了很多尝试后,终于解决了这个问题。方法如下:
用ClassWizard给对话框上的控件关联变量,变量定义会加在头文件中的//{{AFX_DATA(VideoSynopsisDlg) 和 //}}AFX_DATA 之间,如下所示:
// Dialog Data
//{{AFX_DATA(VideoSynopsisDlg)
enum { IDD = IDD_VIDEOSYNOPSIS_DIALOG };
int m_synopsisID; // 要显示的视频摘要的ID
int m_concurrenceNum; // 在屏幕上并发显示的目标的数量
CString m_dvr_ip;
int m_dvr_port;
int m_dvr_channel;
CString m_dvr_password;
CString m_dvr_account;
//}}AFX_DATA
把后期加入了变量定义放到{{AFX_DATA(VideoSynopsisDlg) 和 //}}AFX_DATA 之外后,程序就能运行了,如下:
CString m_dvr_ip;
int m_dvr_port;
int m_dvr_channel;
CString m_dvr_password;
CString m_dvr_account;
// Dialog Data
//{{AFX_DATA(VideoSynopsisDlg)
enum { IDD = IDD_VIDEOSYNOPSIS_DIALOG };
int m_synopsisID; // 要显示的视频摘要的ID
int m_concurrenceNum; // 在屏幕上并发显示的目标的数量
//}}AFX_DATA
原因:vc++6.0的bug,建议用vs2008或vs2010比较好。