欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

ce6.0在vs2005的应用程序,按钮响应函数中,出现奇怪异常,求指教

更新时间: 2014-01-05 03:10:12 责任编辑: Author_N1

 

CE6.0在VS2005的应用程序,按钮响应函数中,出现奇怪错误,求指教!
在下在调指纹模块的应用程序。从模块厂家要来的Demo是用EVC开发的,我在VS2005下转换项目文件格式后,打开成功,修改了个别错误,调试通过,在板子上运行没问题。

怪事出现了,为什么按钮的响应函数里调用局部数组出错,改成全局的就行?数组都挺大,70KB,70000多元素。。。

我在VS2005下自己新建一个CE下的MFC应用程序,照葫芦画瓢,抽取了“打开设备”、“采集图像”两个模块,运行一直出错:
,怎么改也不奏效。
昨天瞎碰,把按钮响应函数的局部数组改为全局数组,程序又往下走了一段!就是把下面的
ImgData拿到文件开头全局定义。本来卡在这句定义出错,修改后,停在了ret = PSUpImage这句。
//unsigned char ImgData[IMAGE_SIZE]; 

pMyDlg->ShowInfo(L"Download Pic...");

ret = PSUpImage(nDevAddr,ImgData,&ImgLen);  //上传图象,此为第三方DLL库函数
// CString str;
// str.Format(_T("ImgLen = %d"),ImgLen);
// AfxMessageBox(str);

WriteLogFile("GenImg 6\r\n");


由于PSUpImage()函数是第三方DLL函数,查不出原因,但DLL有源码,于是把它的源码直接加到项目中,一起编译。发现程序卡在了PSUpImage()函数的下面:
//	unsigned char cCmd[10];
// unsigned char iSendData[MAX_PACKAGE_SIZE], iGetData[MAX_PACKAGE_SIZE];
memset(iSendData,0,MAX_PACKAGE_SIZE);
memset(iGetData,0,MAX_PACKAGE_SIZE);


还是局部数组!我拿到文件开头改为全局数组后,再次通过!但是PSUpImage()中memcpy(iSendData+3, pContent, nLength);这句又报“应用程序严重错误。。。”,这次都是全局数组了。。。

我不明白为什么厂家给的程序(EVC开发)用局部数组,几十KB都没问题,我自己新建的就必须改为全局数组?

高手帮帮忙吧,好几天了都。谢谢了!

--参考方法--
vs2005的stack比较小,你定义这么大的局部数据当然不行了。你可以考虑下面的做法:
1.将工程属性里面stack的值改大
2.局部数组添加static,或者是全局变量。
3.局部数组使用new/delete

推荐存续从低到高排。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:10:12
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/19075/
本文WWW.DOC100.NET DOC100.NET版权所有。