C++ MEX API
Note
The C++ MEX API is not compatible with the C MEX API described in Write C Functions Callable from MATLAB (MEX Files). You cannot mix these APIs in a MEX file.
The C++ MEX API enables you to create applications that take advantage of C++11 features, such as move semantics, exception handling, and memory management.
matlab::mex::Function
—Base class for C++ MEX functions.matlab::mex::ArgumentList
—Container for inputs and outputs from C++ MEX functions.matlab::engine::MATLABEngine
—Class defining engine API.
matlab::mex::Function
Class
All MEX file implementations are classes that derive from matlab::mex::Function
.
matlab::mex::Function Function | Description |
---|---|
getEngine | Get pointer to the MATLABEngine object. |
mexLock | Prevent clearing of MEX file from memory. |
mexUnlock | Allow clearing of MEX file from memory. |
getFunctionName | Get the name of the current MEX function. |
matlab::mex::ArgumentList
Class
The MEX function arguments passed with the operator()
of the
mex::Function
class are matlab::mex::ArgumentList
containers. ArgumentList
is a
full range to the underlying collection of arrays.
matlab::mex::ArgumentList Method | Description |
---|---|
operator[ ] | Enables [] indexing into the elements of an
ArgumentList . |
begin | Begin iterator. |
end | End iterator. |
size | Returns the number of elements in the argument list. Use this method to check the number of inputs and outputs specified at the call site. |
empty | Returns a logical value indicating if the argument list is empty
(size() == 0 ). |
C++ Engine API
Access MATLAB® functions, variables, and objects using the matlab::engine::MATLABEngine
class.
To call methods in this class, use getEngine
to create a shared pointer like matlabPtr
in this example:
std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine();
Use matlabPtr
to call engine methods. For example:
matlabPtr->feval(...);
Call engine methods only on the same thread as the mex::Function
class.
matlab::engine::MATLABEngine Method | Description | Examples |
---|---|---|
feval | Evaluate MATLAB functions with input arguments synchronously. Use
| Call MATLAB Functions from MEX Functions |
fevalAsync | Evaluate MATLAB functions with input arguments and returned values asynchronously. | For more information, see Make async Requests Using mexCallMATLAB. |
eval | Evaluate a MATLAB statement as a string synchronously. | Execute MATLAB Statements from MEX Function |
evalAsync | Evaluate a MATLAB statement as a string asynchronously. | For more information, see Make async Requests Using mexCallMATLAB. |
getVariable | Get a variable from the MATLAB base or global workspace. | Set and Get MATLAB Variables from MEX |
getVariableAsync | Get a variable from the MATLAB base or global workspace asynchronously. | |
setVariable | Put a variable into the MATLAB base or global workspace. If a variable with the
same name exists in the MATLAB workspace, | Set and Get MATLAB Variables from MEX |
setVariableAsync | Put a variable into the MATLAB base or global workspace asynchronously. | |
getProperty | Get the value of an object property. | MATLAB Objects in MEX Functions |
getPropertyAsync | Get the value of an object property asynchronously. | |
setProperty | Set the value of an object property. | MATLAB Objects in MEX Functions |
setPropertyAsync | Set the value of an object property asynchronously. |
For information about exceptions, see Handle Exceptions. For examples, see Catch Exceptions in MEX Function.