matlab::cpplib::initMATLAB 库
初始化可部署存档文件中打包的 MATLAB 函数库
描述
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())
initMATLABLibrary 函数用于初始化打包在可部署存档文件(.ctf 文件)中的 MATLAB® 函数库,并返回指向该库的唯一指针。它需要一个指向 MATLABApplication 实例的共享指针以及存档文件的路径。您可以选择提供一个 64 字节的十六进制编码 AES 解密密钥,作为解密该库的选项。
可部署存档的路径可以是相对的,也可以是绝对的。如果路径是相对的,则按照下面指定的顺序添加以下路径,直到找到文件或用尽所有可能性。
如果环境变量 CPPSHARED_BASE_CTF_PATH 已定义,则其值是。
工作文件夹。
可执行文件所在的文件夹。
在 macOS 系统中,位于可执行文件所在位置上方三级的文件夹。
如果找到了该库,则对其进行初始化,并返回一个指针。否则该函数将抛出异常。
生命周期和实例管理
initMATLABLibrary 函数对库实例的管理方式与基于旧版 mwArray API 的共享库目标不同。在使用 mwArray API 的版本中,单个进程内针对同一组件的多次初始化调用通常会共享一个 MATLAB Runtime 的进程内实例。
当您使用 MATLAB Data API (C++11) 时,每次调用 initMATLABLibrary 都会创建一个独立的库实例。该实例由返回的 std::unique_ptr<MATLABLibrary> 智能指针拥有,当该指针超出作用域时,该指针会自动处理库的清理和终止工作。虽然这种设计能更好地隔离各个组件,但也意味着开发者必须决定在何处定义指针的作用域,以确保在预期使用期间库始终可用。若要复现 mwArray API 的传统行为(即每个组件仅存在一个实例),您应仅初始化该库一次,并在整个应用程序中共享生成的指针。
参数
std::shared_ptr<MATLABApplication> application | 指向从 |
const std::u16string & ctfPath | 存档文件的相对路径或绝对路径。 |
const std::u16string& session_key = std::u16string() | AES 解密密钥,指定为具有 64 字节文件大小的十六进制编码 AES 密钥。 有关详细信息,请参阅 |
返回值
| 指向 |
异常
| 在共享库路径上未找到具有给定名称的库。 |
matlab::cpplib::LibInitErr | 无法初始化库。 |
示例
初始化 MATLABLibrary
std::vector<std::u16string> opts = {u"-nojvm"};
auto matlabPtr = initMATLABApplication(MATLABApplicationMode::IN_PROCESS, opts);
auto libAstro = initMATLABLibrary(matlabPtr, convertUTF8StringToUTF16String("astro.ctf"));
版本历史记录
在 R2018a 中推出
另请参阅
matlab::cpplib::convertUTF8StringToUTF16String | matlab::cpplib::convertUTF16StringToUTF8String | matlab::cpplib::initMATLABApplication | matlab::cpplib::runMain | matlab::cpplib::initMATLABLibraryAsync | matlab::cpplib::MATLABLibrary::feval | matlab::cpplib::MATLABLibrary::fevalAsync | matlab::cpplib::MATLABLibrary::waitForFiguresToClose