occcont.cpp line 925运行错误 Debug Assertion Failed

xy121z 2016-09-16 08:06:55
编译正确,运行时显示:
运行程序,显示
Debug Assertion Failed
programe: c:\windows\system32\xxx.dll
file:E:\programs\vctools\occcont.cpp
line:925

第925行有一个断言( ASSERT(。。。。。) )这个断言条件(即ASSERT后括号里的条件)在调试的时候没有得到满足,所以抛出了这个断言错误。但我想程序在别的机器上肯定可以跑,换了台机器就出错,应该不是代码问题,而是哪里设置不对。

再看Debug窗口里的Trace信息如下:
control {6262d3a0-531b-11cf-91f6-c2863c385e30} failed.
>>> Result code: 0×80040154
>>> Is the control is properly registered?
Warning: Resource items and Win32 Z-order lists are out of sync. Tab order may be not defined well.

查看Result Code:0×80040154,发现是REGDB_E_CLASSNOTREG错误。结合下面的提示语句,Is the control is properly registered?。猜想是某个控件未被注册。然后查找 control的CLSID{6262d3a0-531b-11cf-91f6-c2863c385e30},发现是控件FlexGrid Control 6.0。该控件包含在Msflxgrd.ocx文件中。在网上下载该控件,因为是64位机器,将该文件拷贝入机C:\Windows\SysWOW64中,然后在命令提示符以及再以管理员身份两次注册:regsvr32 C:\Windows\SysWOW64\Msflxgrd.ocx。再次编译运行,顺利通过。

...全文
3383 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-09-19
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll
Cacar 2016-09-19
  • 打赏
  • 举报
回复
应该是某个用到的控件没有注册,对每个控件用一下regsvr32 ***.dll(或***.ocx)试试,命令行注意要管理员权限。
paschen 2016-09-16
  • 打赏
  • 举报
回复
学会调试比一切

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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