本人做了一个图像处理的算法,程序可以执行,但单步调试是,调用函数后,函数运行时出现了错误,出现了一个对话框,提示如下: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;
}
还请各位高手能够帮我看看,谢谢!!!