MATLAB: MxCreateNumericArray error: cannot convert ‘int*’ to ‘const size_t* {aka const long long unsigned int*}’ for argument ‘2’ to ‘mxArray*

MATLAB Compilermxcreatenumericarray

I am trying to replicate the paper of Druedahl and Jorgensen (2017), with title "A general endogenous grid method for multi-dimensional models with non-convexities and constraints". However, I have an issue with the compiler in matlab, to read C++ files. More specifically, when I do in matlab:
mex cfuncs\mexUpperEnvelopeToCommon.cpp CXXFLAGS="$CXXFLAGS -fopenmp -std=c++11 -O3 -march=native -ffast-math -fabi-version=0 -mavx2" C:\TDM-GCC-64\lib\gcc\x86_64-w64-mingw32\5.1.0\libgomp.a;
I get the error:
error: cannot convert 'int*' to 'const
size_t* {aka const long long unsigned int*}' for argument '2' to 'mxArray* mxCreateNumericArray_730(size_t, const
size_t*, mxClassID, mxComplexity)'
plhs[iout] = mxCreateNumericArray(par->ndim,dims,mxLOGICAL_CLASS,mxREAL);
Also mex -DMX_COMPAT_32 cfuncs\mexUpperEnvelopeToCommon.cpp gives the same error.
I already tried to replace all int with mwSize. However, there are also two int* in the file, and I do not know how to replace those.
Does anyone know how to solve the issue? I attach the zip file with the C++ functions.

Best Answer

Simply replace this
int* dims = new int[par->ndim];
with this
mwSize* dims = new mwSize[par->ndim];