VC调试中遇到一个问题,请教!!!

boyliuyi111 2006-05-02 09:51:21
本人做了一个图像处理的算法,程序可以执行,但单步调试是,调用函数后,函数运行时出现了错误,出现了一个对话框,提示如下:Please enter the path for CHKSTK.ASM 。
现附有关代码如下:
Class view 中的程序:
.....................................................
// 二维数组并初始化
BYTE** InImage; //输入图像数组
::Allocate2D(InImage, lHeight, lLineBytes, 255);
BYTE** OutImage; //输出图像数组
::Allocate2D(OutImage, lHeight, lLineBytes, 255);
BYTE** upBlanket; //上毯图像数组
::Allocate2D(upBlanket, lHeight, lLineBytes, 255);
BYTE** bwBlanket; //下毯图像数组
::Allocate2D(bwBlanket, lHeight, lLineBytes, 255);
//处理
::DIBToArray(lpDIBBits,WIDTHBYTES(lWidth*8),::DIBHeight(lpDIB) , InImage);
if (FraDimDoubleBlanket(InImage,upBlanket,bwBlanket,lHeight,lLineBytes,&pert,&minsqua,&dimen))
{

// 设置脏标记
pDoc->SetModifiedFlag(TRUE);
FractalDim dlg;
dlg.m_fracDimen=dimen;
if(IDOK==dlg.DoModal())
Invalidate();

// 更新视图
pDoc->UpdateAllViews(NULL);
}
else
{
// 提示用户
MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);
}



::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());
::Free2D(InImage, lHeight);
::Free2D(OutImage, lHeight);
::Free2D(upBlanket,lHeight);
::Free2D(bwBlanket,lHeight);
...................................................
FraDimDoubleBlanket函数程序(双毯子法计算分形维数)
BOOL FraDimDoubleBlanket(BYTE** InImage,BYTE** upBlanket,BYTE** bwBlanket, long Row, long Col,double *Ppert,double *Pminsqua,double *Pdimen)
{
int i=0,j=0;//定义循环变量
//为上毯和下毯开辟内存单元
double V[500],A[500],Num[500];
double a,b,c;
int N;
int tMax,tMin;//定义中间最大,最小灰度值。
int n,Nmax;//定义腐蚀、膨胀次数变量和最大次数
Nmax=10;
for(i=0;i<Row;i++)
for(j=0;j<Col;j++)
{
upBlanket[i][j]=0;
bwBlanket[i][j]=0;
}
for(n=1;n<=Nmax;n++)
{
Num[n]=log((double)n);
N=0;
for(i=0;i<Row;i++)
for(j=0;j<Col;j++)
{
//对第0行进行处理,求出最大,最小灰度值
if(i==0)
{
if(j==Col-1||j==0)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i+1][j],0);
tMin=fiveMin(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i+1][j],255);
}
}
//对第(Row-1)行进行处理,求出最大,最小灰度值
else if(i==Row-1)
{
if(j==Col-1||j==0)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i-1][j],0);
tMin=fiveMin(InImage[i][j],InImage[i][j+1],InImage[i][j-1],InImage[i-1][j],255);
}
}
//对第0列进行处理,求出最大,最小灰度值
else if(j==0)
{
if(i==0||i==Row-1)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j+1],0);
tMin=fiveMin(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j+1],255);
}
}
//对第(Col-1)列进行处理,求出最大,最小灰度值
else if(j==Col-1)
{
if(i==0||i==Row-1)
{
tMax=InImage[i][j];
tMin=InImage[i][j];
}
else
{
tMax=fiveMax(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],0);
tMin=fiveMin(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],255);
}
}

//不考虑边界情况下,求出最大最小灰度值
else
{
tMax=fiveMax(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],InImage[i][j+1]);
tMin=fiveMin(InImage[i][j],InImage[i-1][j],InImage[i+1][j],InImage[i][j-1],InImage[i][j+1]);
}
upBlanket[i][j]=tMax;
bwBlanket[i][j]=tMin;
a+=(upBlanket[i][j]-bwBlanket[i][j]);
}//内循环结束
V[n]=a;
if(n-2>0)
A[n]=(V[n]-V[n-1])/2;
A[n]=log((double)A[n]);
}//外循环

threeFitlinear(Num,A,Nmax,&a,&b,&c);
*Pdimen=2-b;
return true;
}
还请各位高手能够帮我看看,谢谢!!!
...全文
207 3 打赏 收藏 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
boyliuyi111 2006-05-02
  • 打赏
  • 举报
回复
请问上面的高手,如何解决问题呢?可以给个提示吗?
谢谢!我想五一搞完,然后就轻松了!
lyl_rabbit 2006-05-02
  • 打赏
  • 举报
回复
学习
DentistryDoctor 2006-05-02
  • 打赏
  • 举报
回复
堆栈被破坏。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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