关于MFC的debug和release....附加两个.h互相引用.
2011-05-18 19:27
239 查看
当时是这样的:兴致勃勃的在debug下运行成功,却没想到在想做个结尾时发生了不该发生的事情.release一用.立刻崩盘...
解释:
在程序中,如前面一篇讲UI线程的文章所述,在线程间,采用postMessage 和 sendMessage来进行消息通信...but.起初定义消息响应函数的声明为:afx_msg void QuitSearch();由于release没调试...只有通过AfxMessageBox当断点来调试程序.发现一运行完消息响应函数后,立即崩盘...百思不得其解...偶然,在网上看到文章,将debug与release的区别讲到"当你在Release下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致这个错误直接原因是消息体的参数没有添加,即应该写成:afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam); "
果断改为afx_msg void QuitSearch(WPARAM wparam=NULL, LPARAM lparam=NULL);然后程序运行稳定...
然后讲讲两个头文件互相引用导致的崩溃.出现原因不多讲了A.h B.h,解决办法:
A.h中
#include "b.h"
class A{...};
B.h中
class A;//声明A.
class B{...};
这个老早就解决过...没想到后来又碰到了...然后不知所措...不过找了找之前项目果断搞定.....
解释:
在程序中,如前面一篇讲UI线程的文章所述,在线程间,采用postMessage 和 sendMessage来进行消息通信...but.起初定义消息响应函数的声明为:afx_msg void QuitSearch();由于release没调试...只有通过AfxMessageBox当断点来调试程序.发现一运行完消息响应函数后,立即崩盘...百思不得其解...偶然,在网上看到文章,将debug与release的区别讲到"当你在Release下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致这个错误直接原因是消息体的参数没有添加,即应该写成:afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam); "
果断改为afx_msg void QuitSearch(WPARAM wparam=NULL, LPARAM lparam=NULL);然后程序运行稳定...
然后讲讲两个头文件互相引用导致的崩溃.出现原因不多讲了A.h B.h,解决办法:
A.h中
#include "b.h"
class A{...};
B.h中
class A;//声明A.
class B{...};
这个老早就解决过...没想到后来又碰到了...然后不知所措...不过找了找之前项目果断搞定.....
相关文章推荐
- 关于VS2013优化后MFC中对文件读取失败的解析(debug下可以,release下失败)
- MFc 两个类头文件互相引用
- MFC,将debug配置为release、mfu140ud.dll丢失、#include _AFXDLL 、No such file or directory
- VC下关于debug和release的不同的讨论
- VC下关于debug和release的不同的讨论(收藏-转载)
- c++中两个类互相持有对方引用的方法
- 关于Debug版删除后,release版安装失败的解决方案(仅供自己查阅)
- 关于Debug和Release之本质区别的讨论(转载)
- Spirng中关于不同的配置文件中的Bean能否互相引用
- 关于两个update语句互相死锁的显现
- 关于如何判断程序和类库是Debug 还是 Release 的问题
- 关于Debug和Release之本质区别
- opencv下关于debug和release的切换报错问题
- 关于Debug和Release之本质区别
- 关于Debug和Release之本质区别
- 关于Debug和Release之本质区别的讨论(主要针对VC6.0和VS2003.net编译工具而言)
- 关于较新版本JQUERY的Load方法会为页面引用文件自动附加时间戳参数阻止它缓存的解决方案.
- 关于Debug和Release的区别 (VS C#)
- MFC中,Release版出错Debug版不出错的一个最常见原因之深入剖析
- VC下关于debug和release的不同的讨论(zz)