Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

C MEX 文件应用程序

使用 mxArray,编写可用于 MATLAB® R2017b 或更早版本的 C 程序

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

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

  • MathWorks 建议您使用现代 C++ 功能创建 MEX 函数,如 MATLAB 数据 API 中定义。有关详细信息,请参阅C++ MEX 应用程序

  • 如果您的 MEX 函数必须在 MATLAB R2017b 或更早版本中运行,或如果您更喜欢使用 C 语言,请使用 C 矩阵 API 和 C MEX API 中的函数。这些 API 使用 MATLAB mxArray 数据结构。此页上列出的函数和主题基于 mxArray

注意

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

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

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

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

如果您有 C/C++ 程序并且要从该程序中调用 MATLAB 函数,请使用其中一个引擎 API。

如果您要在 C/C++ 程序中读取和写入 MATLAB 数据,请使用 用于读取 MAT 文件数据的 MATLAB C API

函数

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

C MEX API

mexFunctionEntry point to C/C++ MEX function built with C Matrix API
mexFunctionNameName of current MEX function
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 矩阵 API 版本

共享 MEX 文件

疑难解答

编译错误

运行时错误

调试