C++ MEX API
注意
C++ MEX API 与 编写可从 MATLAB(MEX 文件)调用的 C 函数中所述的 C MEX API 不兼容。您不能在 MEX 文件中混用这些 API。
通过 C++ MEX API,您可以创建利用 C++11 功能(例如移动语义、异常处理和内存管理)的应用程序。
matlab::mex::Function
- C++ MEX 函数的基类。matlab::mex::ArgumentList
- C++ MEX 函数的输入和输出的容器。matlab::engine::MATLABEngine
- 定义引擎 API 的类。
matlab::mex::Function
类
所有 MEX 文件实现均是从 matlab::mex::Function
派生的类。
matlab::mex::Function 函数 | 描述 |
---|---|
getEngine | 获取指向 MATLABEngine 对象的指针。 |
mexLock | 防止从内存中清除 MEX 文件。 |
mexUnlock | 允许从内存中清除 MEX 文件。 |
getFunctionName | 获取当前 MEX 函数的名称。 |
matlab::mex::ArgumentList
类
通过 mex::Function
类的 operator()
传递的 MEX 函数参量是 matlab::mex::ArgumentList
容器。ArgumentList
完全涵盖数组的基本集合。
matlab::mex::ArgumentList 方法 | 描述 |
---|---|
operator[ ] | 支持对 ArgumentList 的元素进行 [] 索引。 |
begin | 启动迭代器。 |
end | 结束迭代器。 |
size | 返回参量列表中的元素数。使用此方法检查在调用点指定的输入和输出的数目。 |
empty | 返回逻辑值,指示参量列表是否为空 (size() == 0 )。 |
C++ Engine API
使用 matlab::engine::MATLABEngine
类访问 MATLAB® 函数、变量和对象。要调用此类中的方法,请使用 getEngine
创建一个共享指针,如此示例中的 matlabPtr
:
std::shared_ptr<matlab::engine::MATLABEngine> matlabPtr = getEngine();
使用 matlabPtr
调用引擎方法。例如:
matlabPtr->feval(...);
仅可在 mex::Function
类所在相同线程上调用引擎方法。
matlab::engine::MATLABEngine 方法 | 描述 | 示例 |
---|---|---|
feval | 使用输入参量同步计算 MATLAB 函数。使用 | Call MATLAB Functions from MEX Functions |
fevalAsync | 使用输入参量和返回值异步计算 MATLAB 函数。 | 有关详细信息,请参阅Making async Requests Using mexCallMATLAB。 |
eval | 以同步方式计算 MATLAB 语句字符串。 | Execute MATLAB Statements from MEX Function |
evalAsync | 以异步方式计算 MATLAB 语句字符串。 | 有关详细信息,请参阅Making async Requests Using mexCallMATLAB。 |
getVariable | 从 MATLAB 基础工作区或全局工作区获取变量。 | Set and Get MATLAB Variables from MEX |
getVariableAsync | 以异步方式从 MATLAB 基础工作区或全局工作区获取变量。 | |
setVariable | 将变量放入 MATLAB 基础工作区或全局工作区中。如果 MATLAB 工作区中存在同名变量, | Set and Get MATLAB Variables from MEX |
setVariableAsync | 以异步方式将变量放入 MATLAB 基础工作区或全局工作区中。 | |
getProperty | 获取对象属性的值。 | MATLAB Objects in MEX Functions |
getPropertyAsync | 以异步方式获取对象属性的值。 | |
setProperty | 设置对象属性的值。 | MATLAB Objects in MEX Functions |
setPropertyAsync | 以异步方式设置对象属性的值。 |
有关异常的信息,请参阅MATLAB Engine API for C++ Exception Classes。有关示例,请参阅Catch Exceptions in MEX Function。