这是我想使用霍夫曼编码解码和链接压缩图像的解开代码。
#包括“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 文件
我知道程序没问题,但我不知道我该怎么做?请任何人帮助我。