Start MATLAB Sessions from C++
These examples show how to start a MATLAB® engine session from your C++ program synchronously or asynchronously. To
start the session, use one of these utility functions, which are defined in the
matlab::engine namespace:
matlab::engine::startMATLAB— Start a MATLAB session synchronously.matlab::engine::startMATLABAsync— Start a MATLAB session asynchronously.
For information on how to setup and build C++ engine programs, see Requirements to Build C++ Engine Applications.
Start MATLAB Session Synchronously
Start MATLAB from C++ synchronously. startMATLAB returns a unique pointer
to the MATLABEngine instance.
#include "MatlabEngine.hpp"
void startMLSession() {
using namespace matlab::engine;
// Start MATLAB engine synchronously
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();
}Start MATLAB Session Asynchronously
Start MATLAB from C++ asynchronously. Use FutureResult::get to
get the unique pointer to the MATLABEngine instance that is
returned by startMATLABAsync.
#include "MatlabEngine.hpp"
void startMLSessionAsync() {
using namespace matlab::engine;
// Start MATLAB engine asynchronously
FutureResult<std::unique_ptr<MATLABEngine>> matlabFuture = startMATLABAsync();
std::unique_ptr<MATLABEngine> matlabPtr = matlabFuture.get();
}Start MATLAB with Startup Options
You can start a MATLAB session using supported MATLAB startup options. For information on MATLAB startup options, see Commonly Used Startup Options. For information on the startup options
supported by the engine, see matlab::engine::MATLABEngine.
This example starts MATLAB using the -r and
matlab.engine.ShareEngine options. Create a vector containing
each option as an element in the vector.
#include "MatlabEngine.hpp"
void startMLOptions() {
using namespace matlab::engine;
// Start MATLAB with -r option
std::vector<String> optionVec;
optionVec.push_back(u"-r");
optionVec.push_back(u"matlab.engine.shareEngine");
std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB(optionVec);
}See Also
matlab::engine::startMATLAB | matlab::engine::startMATLABAsync