首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

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

2013-12-28 
CE6.0在VS2005的应用程序,按钮响应函数中,出现奇怪错误,求指教!在下在调指纹模块的应用程序。从模块厂家要

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

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

我在VS2005下自己新建一个CE下的MFC应用程序,照葫芦画瓢,抽取了“打开设备”、“采集图像”两个模块,运行一直出错:
CE6.0在VS2005的应用程序,按钮响应函数中,出现奇怪异常,求指教,怎么改也不奏效。
昨天瞎碰,把按钮响应函数的局部数组改为全局数组,程序又往下走了一段!就是把下面的
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

推荐存续从低到高排。

热点排行