1

这是我想使用霍夫曼编码解码和链接压缩图像的解开代码。

#包括“mex.h”
    void unrav(uint16_T *hx, double *link, double *x, double xsz,int hxsz)
    {
        诠释我=15;
        整数 j=0,k=0,n=0;
        而 (xsz-k)
        {
            if (*(link + n) >0) {
            如果 ((*(hx + j) >> i) & 0x0001)
                n=*(链接 + n);
            否则 n=*(链接 + n) - 1;
                如果 (i) 我——;否则 { j++; 我= 15;}
                    如果 (j>hxsz)
                        mexErrMsgTxt("代码已用完???");
                        }
                    别的 {
                            *(x + k++) =-*(链接 +n);
                            n=0;}
                        }
                        如果 (k== xsz -1)
                            *(x+ k++) =-*(链接+n);
                            }
                            无效 mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
                            {
                               双*链接,*x,xsz;
                                uint16_T *hx;
                                诠释 hxsz;
                                如果(nrhs != 3)
                                mexErrMsgTxt("需要三个输入。");
                                否则如果 (nlhs>1)
                                        mexErrMSgTxt("输出参数太多。");
                                        if(!mxIsDouble(prhs[2]) || mxIsComplex(prhs[2]) ||
                                            mxGetN(prhs[2])*mxGetM(prhs[2]) !=1)
                                            mexErrMsgTxt("输入大小必须是标量");
                                            hx=(uint16_T *) mxGetData(prhs[0]);
                                            链接=(双*)mxGetData(prhs [1]);
                                            xsz=mxGetScalar(prhs[2]);
                                            hxsz=mxGetM(prhs[0]);
                                            plhs[0]=mxCreateDoubleMatrix(xsz, 1, mxREAL);
                                            x=(双 *) mxGetData(plhs[0]);
                                            unrav(hx,链接,x,xsz,hxsz);
                                 }

这是我的解开程序,但是在 matlab R2012a 上执行它时,它显示如下错误:

架构 x86_64 的未定义符号:
      “_mexErrMSgTxt”,引用自:
          unrav.o 中的 _mexFunction
    ld:未找到架构 x86_64 的符号
    collect2: ld 返回 1 个退出状态
        mex:“unrav.mexmaci64”的链接失败。

我正在使用 Mac OSX Lion 10.7.2 并且我有 Xcode 4.2,但我尝试在那里编译它但不支持 mex.h 文件

我知道程序没问题,但我不知道我该怎么做?请任何人帮助我。

4

1 回答 1

0

调用的正确函数是mexErrMsgTxt. 函数名称区分大小写。你拼错了,所以链接器找不到它:

mexErrMSgTxt("Too many output arguments.");
于 2012-10-23T13:20:16.397 回答