|On this page…|
MEX-files support all C++ language standards.
This section discusses specific C++ language issues to consider when creating and using MEX-files.
The C++ source code for the examples provided by MATLAB® use the .cpp file extension. The extension .cpp is unambiguous and recognized by C++ compilers. Other possible extensions include .C, .cc, and .cxx.
To build a C++ MEX-file, type:
where filename is the name of the source file.
You can run a C++ MEX-file only on systems with the same version of MATLAB that the file was compiled on.
Do not use the mxFree or mxDestroyArray functions in a C++ destructor of a class used in a MEX-function. If the MEX-function throws an error, MATLAB cleans up MEX-file variables, as described in Automatic Cleanup of Temporary Arrays.
If an error occurs that causes the object to go out of scope, MATLAB calls the C++ destructor. Freeing memory directly in the destructor means both MATLAB and the destructor free the same memory, which can corrupt memory.
Using cout or the C-language printf function does not work as expected in C++ MEX-files. Use the mexPrintf function instead.