在下在调指纹模块的应用程序。从模块厂家要来的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都没问题,我自己新建的就必须改为全局数组?
高手帮帮忙吧,好几天了都。谢谢了!