24小时热门版块排行榜    

查看: 310  |  回复: 0

zkj8853

银虫 (小有名气)

[求助] VC中mex程序的图像结构体数据传递问题

typedef unsigned char ubyte;

typedef struct ImageGray ImageGray;
struct ImageGray
{
   ulong Width;
   ulong Height;
   ubyte *Pixmap;
};

void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{
    ImageGray *img;
    double temp;
    if( nrhs >=1 )   img = getData( &prhs[0] );
      else mexErrMsgTxt("No Input...\n";
    mrows = mxGetM(prhs[0]);
    ncols = mxGetN(prhs[0]);
    plhs[0] = mxCreateDoubleMatrix(mrows,ncols, mxREAL);
    temp = (mxArray *)mxGetData(plhs[0]);
    temp = Gettemplate(img,100);
    mxfree(img);
    if (nlhs==0)     mxDestroyArray(plhs[0]);  
    return;
}
ImageGray *getData( const mxArray **prhs )
{
    ubyte      *pr, *data;
    int         index, number_of_dimensions, total_elements, bytes_to_copy;
    const int   *ldims;
    ImageGray   *img;
    total_elements = mxGetNumberOfElements(*prhs);
    pr = (ubyte *)mxGetData(*prhs);
    for ( index = 0; index < total_elements; index++ ){
        *(data+index) = *pr++;
    }
    img->Pixmap = data;//整个程序编译连接都没问题,matlab调用该程序,每次运行到这里都中止。
    img->Height = dims[0];
    img->Width = dims[1];   
    return img;
}
*(data+index) = *pr++;调试没问题,屏蔽img->Pixmap = data;后,下面这两行照样出问题:img->Height = dims[0];img->Width = dims[1];
所以,我觉得可能是“img->”箭头指针有问题,但我不知道原因。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zkj8853 的主题更新
信息提示
请填处理意见