"Shiguo " <email@example.com> wrote in message <firstname.lastname@example.org>... > When I was using svmtrain in libsvm. I got this same problem. I write the software author (Chih-Jen Lin), he said that we need to modify make.m, add -largeArrayDims on 64-bit machines. So we need: > > mex -O -largeArrayDims ... > > now the make file is like this: > > mex -O -largeArrayDims -c svm.cpp > mex -O -largeArrayDims -c svm_model_matlab.c > mex -O -largeArrayDims svmtrain.c svm.obj svm_model_matlab.obj > mex -O -largeArrayDims svmpredict.c svm.obj svm_model_matlab.obj > mex -O -largeArrayDims libsvmread.c > mex -O -largeArrayDims libsvmwrite.c > > It fixed the problem. Enjoy~ > > P.S., the following FAQ says about the x64 compiler when installing visual studio c. > > Q: On 64bit Windows I compile the MATLAB interface without problem, but why errors occur while running it? > > If you use Microsoft Visual Studio, probabally it is not properly installed. See the explanation here. > http://www.mathworks.com/support/compilers/R2009b/win64.html;jsessionid=Ls87LF1JH1RnLp18kQdqtzvQGvw29Q4w26dJJn9JpzwZxCGNN7T4!-1681277526#n7
I was originally getting this error: "Function "mxGetIr_700" is obsolete in file "compat32.cpp", line 246. (64-bit mex files using sparse matrices must be rebuilt with the "-largeArrayDims" option. ...)"
But I've still got this problem, even when I compile my GibbsSamplerAT.cpp file with the -largeArrayDims flag.
GibbsSamplerAT.cpp: In function ‘void mexFunction(int, mxArray**, int, const mxArray**)’: GibbsSamplerAT.cpp:265: error: cannot convert ‘mwIndex*’ to ‘int*’ in assignment GibbsSamplerAT.cpp:266: error: cannot convert ‘mwIndex*’ to ‘int*’ in assignment GibbsSamplerAT.cpp:385: error: cannot convert ‘mwIndex*’ to ‘int*’ in assignment GibbsSamplerAT.cpp:386: error: cannot convert ‘mwIndex*’ to ‘int*’ in assignment GibbsSamplerAT.cpp:417: error: cannot convert ‘mwIndex*’ to ‘int*’ in assignment GibbsSamplerAT.cpp:418: error: cannot convert ‘mwIndex*’ to ‘int*’ in assignment
Here are lines 265 and 266: irad = mxGetIr(prhs); jcad = mxGetJc(prhs);
, where 'irad' and 'jcad' are defined as *int. I tried casting them to mwIndex*, but got further errors.