Documentation

Creating C++ MEX-Files

MEX-files support all C++ language standards. This topic discusses specific C++ language issues to consider when creating and using MEX-files.

Use the C syntax statements in the MATLAB® API libraries in your C++ applications. You can also copy MATLAB C code examples into C++ applications. For example, see the mexcpp.cpp file that contains both C and C++ statements.

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.

See Also

Related Examples

More About

Was this topic helpful?