Creating C++ MEX-Files

MEX-files support all C++ language standards.

This section discusses specific C++ language issues to consider when creating and using MEX-files.

Creating Your C++ Source File

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.

Compiling and Linking

To build a C++ MEX-file, type:

mex filename.cpp

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.

Memory Considerations For Class Destructors

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.

Use mexPrintf to Print to the MATLAB Command Window

Using cout or the C-language printf function does not work as expected in C++ MEX-files. Use the mexPrintf function instead.

Related Examples

More About

Was this topic helpful?