Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

编写可从 MATLAB(MEX 文件)调用的 C 函数

创建可以从 MATLAB® R2017b 或更早版本中调用的 C 函数,使用 mxArray 访问 MATLAB 变量并创建返回 MATLAB 的数组

您可以像调用内置函数一样,从 MATLAB 命令行调用您自己的 C 程序。这些程序称为 MEX 函数,并且函数名称为 MEX 文件名。MEX 函数并不适用于所有应用程序。MATLAB 是一种高生产率环境,尤其适用于消除编译语言中需要花费大量时间的低级编程。一般情况下,请在 MATLAB 中进行编程。除非您的应用程序需要,否则请不要使用 MEX 函数。

要创建 MEX 函数,请使用 MATLAB API 编写程序。这些库中的函数有助于在 MEX 函数和工作区之间传输数据。要选择 MATLAB API,请考虑以下几点:

注意

选择来自 C Matrix API 或 MATLAB Data API 的函数;您不能混合使用来自这些 API 的函数。

使用 mex 函数将您的源文件编译到可执行程序中。您也可以与其他 MATLAB 用户共享 MEX 文件。

有关编写 S-Function 的信息,请参阅您的 Simulink® 文档。

要调用其他人创建的 MEX 函数,请参阅调用 MEX 函数

如果您有 C/C++ 程序并且要从该程序中调用 MATLAB 函数,请使用其中一个引擎 API。有关详细信息,请参阅:

如果您要从 C 程序中读写 MATLAB 数据,请参阅编写 C 程序以读取 MAT 文件数据

函数

mex编译 MEX 函数或引擎应用程序
dbmexUNIX 平台上启用 MEX 文件调试

C MEX API

mexFunctionEntry point to C/C++ MEX function built with C Matrix API
mexFunctionName当前 MEX 函数的名称
mexAtExitRegister function to call when MEX function clears or MATLAB terminates
mexCallMATLABCall MATLAB function, user-defined function, or MEX function
mexCallMATLABWithTrapCall MATLAB function, user-defined function, or MEX file and capture error information
mexEvalStringExecute MATLAB command in caller workspace
mexEvalStringWithTrapExecute MATLAB command in caller workspace and capture error information
mexGetVariableCopy of variable from specified workspace
mexGetVariablePtrRead-only pointer to variable from another workspace
mexPutVariableArray from MEX function into specified workspace
mexGetValue of specified graphics property
mexSetSet value of specified graphics property
mexPrintfANSI C PRINTF-style output routine
mexErrMsgIdAndTxtDisplay error message with identifier and return to MATLAB prompt
mexWarnMsgIdAndTxtWarning message with identifier
mexIsLockedDetermine if MEX file is locked
mexLockPrevent clearing MEX file from memory
mexUnlockAllow clearing MEX file from memory
mexMakeArrayPersistentMake array persist after MEX file completes
mexMakeMemoryPersistentMake memory allocated by MATLAB persist after MEX function completes

主题

编写 C MEX 函数

测试您的编译环境

C Matrix API 版本

共享 MEX 文件

疑难解答

编译错误

运行时错误

调试