Main Content

C++ MEX API

注意

C++ MEX API 与 编写可从 MATLAB(MEX 文件)调用的 C 函数中所述的 C MEX API 不兼容。您不能在 MEX 文件中混用这些 API。

通过 C++ MEX API,您可以创建利用 C++11 功能(例如移动语义、异常处理和内存管理)的应用程序。

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 函数。使用 feval 将参量从 C++ 传递给 MATLAB,并将结果从 MATLAB 返回给 C++。

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 工作区中存在同名变量,setVariable 会覆盖它。

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

相关主题