MFC 重新拷贝的工程出现DoDataExchange错误

JinxLeader 2014-11-29 10:37:54
在VS2005开发环境下,将一个MFC工程(正常运行)拷贝到一个新建的工程中后编译通过。运行时报错“应用程序XXX.exe出现严重错误,必须关闭”。
通过单步调试定位在程序页始化的DoDataExchange函数内。在通过单步调试,发现错误在
_CRTIMP int __cdecl _VCrtDbgReportW
(
int nRptType,
const wchar _t * szFile,
……
)
{
int retval = 0; // 就是单步运行到这这句话后报错
int handled = FALSE;
wchar_t szLintMessage[DBGRPT_MAX_MSG] = {0};
…………
}

我已经使用过的方法
resource.h 将重复的 宏定义 从新赋值
将页面控件删除重写

请问应该如何解决上述问题
...全文
625 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
JinxLeader 2014-12-12
  • 打赏
  • 举报
回复
问题已经解决了,我把旧程序初始化程序的SHInitExtraControls(); 函数注释之后就可以正常使用了。http://msdn.microsoft.com/en-us/library/aa453715.aspx,这是我在MSDN里找到的解释,大家可以参考一下。
draculamx 2014-11-30
  • 打赏
  • 举报
回复
我碰到过这种问题,一般是和 Resource.h里面的,每个控件对应的值有关,自己重新生成解决方案就可以了。 其实这也不能算是什么BUG,因为 Resource.h 里面的内容,是VS自己管理的,我们手动修改了,出些问题,很正常,再一个”重新生成解决方案“也是很有效的,特别是对这种问题,因为VS在编译生成exe文件时,对那些没有改动过的单元,会沿用原来已经生成好的obj文件,问题就在这里
JinxLeader 2014-11-30
  • 打赏
  • 举报
回复
我重新排查了一遍,发现是Radio 控件出的问题,如果重新新建一个就没问题了。
这里想请教一下大家,还有没有更好的办法,或者完成这个Bug 的深层原因。
JinxLeader 2014-11-30
  • 打赏
  • 举报
回复
这个方法我已经试过了,应该是不行的。
draculamx 2014-11-29
  • 打赏
  • 举报
回复
你应该最先试一下:清理解决方案 或者 重新生成解决方案 。。。。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧