今天这个问题把我困扰死了
debug模式(VC6.0)下没有任何错误, 但是在release模式下就会出错了, 而且执行第一次功能时没问题,执行第二次才会出错!!!
具体情况是这样的, dll给主程序发了一个自定义消息, 主程序接收消息进行处理, 中间有很多细节的代码都被我排除了干系. 不过, 我在release模式下设了断点调试(这个是可行的,具体请Google), 发消息和消息响应函数都走遍了, 就是不出错. 然后按F5继续执行, 就出错了, 定位不到源代码, 汇编看不懂, 囧
幸亏网上搜到了解决办法, 最终发现是我偷懒, 由于发消息WPARAM, LPARAM 的值都是0, 所以响应函数的参数列表就空着没写了. 发生错误的原因, 网上的说法是: wparam和lparam参数没有写,函数在退栈时, 把栈破坏了
所以, 以后不要偷懒了, 响应自定义消息的函数的标准形式是: LRESULT OnXXXX(WPARAM wParam, LPARAM lParam)
不过在VC.NET上, 响应函数的参数为空, 返回值为void编译时就会报错了, 这VC6也真是的, 居然不报错, 运行时出错!!!


这是啥模式?
1、堆栈被破坏,内存访问越界之类的
2、我的u14soft怎么还没有通过你的链接申请?
呃….专业问题…
不过,网上很多资源仍然还是6.0的
谭浩强通知误导的void main,唉
其实跟返回值的关系不大,主要是参数没填
没遇到过,先收藏,以后在学习!!