debug assertion failed winocc.cpp line:138 好不容易下载到一个程序,不能打开,大大们帮我一下吧!急!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了debug assertion failed winocc.cpp line:138 好不容易下载到一个程序,不能打开,大大们帮我一下吧!急!相关的知识,希望对你有一定的参考价值。
这个程序是网上下载的,在xp电脑里通通打不开,好不容易用win7打开,但是只要
一操作就会报错,搜了半天也不知道怎么改,麻烦各位啦,这个软件真的很重要!
138 ASSERT(::IsWindow(m_hWnd));
if (m_pCtrlCont == NULL)
::SetDlgItemText(m_hWnd, nID, lpszString);
else
m_pCtrlCont->SetDlgItemText(nID, lpszString);
这个应该是创建窗口代码的问题。
ASSERT是断言,是C++中用于调试的一个宏。其原理如下:检查传入参数是否为FALSE(即0),如果是则在stderr中输出错误并弹窗提示,伪代码如下:
void myassert(int canshu)
if(canshu)
return;
else
//进行弹窗和输出
好的,进入正文。
其报错部位代码为ASSERT(::IsWindow(m_hWnd));
由m_hWnd可判断出此程序使用MFC编写,而IsWindow函数用于判断窗口是否有效,传进判断句柄。若窗口有效则输出TRUE,否则为FALSE。
下面是MSDN对该函数的解释:
IsWindow function (winuser.h)
10/13/2021
2 minutes to read
Is this page helpful?
Determines whether the specified window handle identifies an existing window.
Syntax
C++CopyBOOL IsWindow( [in, optional] HWND hWnd );
Parameters
[in, optional] hWnd
Type: HWND
A handle to the window to be tested.
Return value
Type: BOOL
If the window handle identifies an existing window, the return value is nonzero.
If the window handle does not identify an existing window, the return value is zero.
Remarks
A thread should not use IsWindow for a window that it did not create because the window could be destroyed after this function was called. Further, because window handles are recycled the handle could even point to a different window.
Examples
For an example, see Creating a Modeless Dialog Box.
那么,可以看出,由于某种原因,句柄或者句柄对应的窗口无效,导致IsWindow返回了FALSE,而ASSERT收到了返回值FALSE,判断该函数出错,因此报错。
总结,这应该是程序编写者的代码在创建窗口时出错,应该向程序作者反馈。
试过了,不是软件的问题,是代码的问题
参考技术B 重新下载个追问行业软件,非常冷门,下载不到
opencv检错:程序运行过程正常,当跳出函数时出现断言错误(Debug Assertion Failed)
转载http://blog.csdn.net/u012327581/article/details/51351780
1.问题描述
在VS2015下配置好Opencv后,程序在函数运行过程中正常,调试时发现,当运行至跳出函数时,出现断言错误。
2.原因分析
单步跟踪调试发现,在函数结束时会进行vector的析构,出现了析构错误。并且,如果vector在定义完成之后,进行resize或reserve操作,将vector空间做大,问题消失。后来查阅资料,结合亲身测试,发现是在调用Opencv 库时,由于opencv库编译使用的是 VC12(或者VC10/VC11)编译的,而本人使用的VS2015使用的时VC14(14是内部编码),不同版本的编译器造成析构方法冲突。
3.解决方法
使用VC12版本的库,需要使用VC12的编译器即可,如VS2012、VS2013
使用VC14编译器时,截至目前,Opencv官网的2.4.*系列版本的库只有VC10/VC11/VC12编译的版本,只有OpenCV3.0之后的版本含有VC14编译的版本。因而本人又重新将opencv使用VS2015进行编译,设置好参数后,问题解决。
卸载vs2015,装上VS2012之后,运行某些vector不会报错了,但是并非所有的vector都能正常运行(这个真的很坑人),重新出现的断言错误如下
此处省略,详情查看下面的链接……
详细链接 http://blog.csdn.net/jianjian1992/article/details/49247003
上面的3楼,针对部分vector有用(占空间不那么大的程序),如果是针对视频的处理,最终还是会失败(治标不治本)。
使用1楼的方法,将依赖库进行修改(改成没有d的情况,末尾有d是debug模式,没有d才是release模式)
改成release模式后虽然能用,但始终没有明白原因,o(╯□╰)o
以上是关于debug assertion failed winocc.cpp line:138 好不容易下载到一个程序,不能打开,大大们帮我一下吧!急!的主要内容,如果未能解决你的问题,请参考以下文章
debug assertion failed winocc.cpp line:138 好不容易下载到一个程序,不能打开,大大们帮我一下吧!急!
用Microsoft Visual Studio 2010编译下面这个程序总是提示Debug Assertion Failed
如何在 Visual Studio 中跳过 Debug Assertion Failed 并直接中断
vc++ 调试时出现Debug Assertion Failed!该怎么办?