You can create a MATLAB® interface to 64-bit shared libraries based on C++98 and commonly occurring C++11 features. However, if a library contains the following data types or language features, then the functionality is not included in the MATLAB interface to the library. You might be able to include this functionality by creating a wrapper header file. For more information, see C++ Limitation Workaround Examples.
Any type with a size greater than 64 bits, for example
References to a pointer, for example
Pointers or arrays of
Pointers or references to enumerations
Reference data members
void* data members
Modifying static data members
** pointers, except:
** pointers to custom classes used
as function or method parameter types.
void** used as function or method
Multilevel pointers, such as
C function pointers and
std::function as function return types
or data members. You also cannot pass a MATLAB function as input to C function pointers or
Class templates with incomplete or no instantiations
Types defined in the
std namespace, except these supported
If a library uses these data types, then the functionality is not included in the MATLAB interface to the library, and MATLAB displays messages like:
Did not add member 'methodName' to class 'ClassName' at HeaderFile.h:290. 'long double' is not a supported type.
Overloaded operator functions
Unnamed namespaces and classes
Preprocessor directives (macros)
Function templates with incomplete or no instantiations
Creating objects of classes in
std namespace, including custom
Smart pointer semantics. Only
std::shared_ptr is supported.
MATLAB does not support operator overloads, move semantics, and the member
functions in the class definition of the smart pointer which might restrict their
effectiveness. Instead, a
std::shared_ptr<T> behaves as type
T in MATLAB. Type
T can be passed as input for
std::shared_ptr<T>, and type
T is received as
Namespace aliases. Use original namespace name instead.
When you build a library containing these features or usage, MATLAB displays:
Warning: Some C++ language constructs in the header file are not supported and not imported.
Saving C++ objects into a MAT-file is not supported.
MATLAB does not support creating MATLAB classes that inherit a C++ interface class.
MATLAB does not support implementing operators by defining these associated functions.
Method to Define