Main Content

matlab::cpplib::initMATLABLibrary

Initialize a library of MATLAB functions packaged in a deployable archive file

Description

std::unique_ptr<MATLABLibrary> initMATLABLibrary(std::shared_ptr<MATLABApplication> application, const std::u16string & ctfPath)

std::unique_ptr<MATLABLibrary> initMATLABLibrary(std::shared_ptr<MATLABApplication> application, const std::u16string & ctfPath, const std::u16string& session_key = std::u16string())

Initialize a library of MATLAB® functions packaged in a deployable archive (CTF) file, and return a unique pointer to the library. As parameters, it takes a shared pointer to a MATLABApplication instance and a path to the CTF. Optionally, it takes an additional argument of a hex encoded 64 byte AES decryption key, which allows the user to decrypt the library at runtime using the C++ API rather than a MEX loader.

The path to the deployable archive is either relative or absolute. If the path is relative, the following paths are prepended in the order specified below until the file is found or all possibilities are exhausted.

  • the value of the environment variable CPPSHARED_BASE_CTF_PATH, if defined

  • the working folder

  • the folder where the executable is located

  • on Mac: the folder three levels above the folder where the executable is located (for example, if the executable is generic_interface/foo_generic.app/Contents/MacOS/foo, the folder used is generic_interface)

If the library is found, it is initialized and a pointer to it is returned. Otherwise, an exception is thrown.

Parameters

std::shared_ptr<MATLABApplication> application

Pointer to a MATLABApplication object returned from initMATLABApplication.

const std::u16string & ctfPath

Path (relative or absolute) to archive.

const std::u16string& session_key = std::u16string()

AES decryption key, specified as a hex encoded AES key with a 64 byte file size.

For more details, see mcc -k.

Return Value

std::unique_ptr<MATLABLibrary>

Pointer to a MATLABLibrary object that is used to call functions from the library, feval etc.

Exceptions

matlab::cpplib::LibNotFound

No library with the given name is found on the shared library path.

matlab::cpplib::LibInitErr

Library cannot be initialized.

Examples

Initialize MATLABLibrary

std::vector<std::u16string> opts = {u"-nojvm"};
auto matlabPtr = initMATLABApplication(MATLABApplicationMode::IN_PROCESS, opts);
auto libAstro = initMATLABLibrary(matlabPtr, convertUTF8StringToUTF16String("astro.ctf"));

Version History

Introduced in R2018a