What is the meaning of "-largeArrayDims"?

조회 수: 5(최근 30일)
Yi 2014년 10월 20일
답변: SK 2014년 10월 20일
When I compile mex function, What is the meaning of "-largeArrayDims"? The following is other people's code. Why is "-largeArrayDims" added on 64-bit machines?
% This make.m is used under Windows
%add -largeArrayDims on 64-bit machines
mex -O -c svm.cpp -largeArrayDims mex -O -c svm_model_matlab.c -largeArrayDims mex -O svmtrain.c svm.obj svm_model_matlab.obj -largeArrayDims mex -O svmpredict.c svm.obj svm_model_matlab.obj -largeArrayDims mex -O libsvmread.c -largeArrayDims mex -O libsvmwrite.c -largeArrayDims


SK 2014년 10월 20일
Without -largeArrayDims, the index type (mwIndex) in files that you compile with the matlab libraries is typedefed as 'int' (in C) which is platform dependent (but often 32 bit). On the other hand if you compile with -largeArrayDims, it is typedefed as size_t which in C or C++ is guaranteed to be the largest integer type available for the platform.
On 64 bit platforms, you know for sure that 64 bit integer is available and that it will actually be useful. You can also add the switch on 32 bit platforms, but it is likely that you cant really create arrays of that size on 32 bit platforms so it may not be as useful or at worst pointless.

Stalin Samuel
Stalin Samuel 2014년 10월 20일


Find more on MATLAB Compiler in Help Center and File Exchange


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by