主要内容

C MEX文件应用

编写与MATLAB一起工作的C程序®R2017b或更早版本,使用mxArray

您可以从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和cmex API。这些api使用MATLABmxArray数据结构。本页面提供的功能和主题基于mxArray

请注意

从C矩阵API或MATLAB数据API中选择函数;你不能混合使用这些api中的函数。

方法将源文件构建为可执行程序墨西哥人函数。您还可以与其他MATLAB用户共享MEX文件。

有关编写s函数的信息,请参阅Simulink金宝app®文档。

若要调用他人创建的MEX函数,请参见MEX文件功能

如果您有一个C/ c++程序,并且希望从程序中调用MATLAB函数,那么请使用其中一个引擎api。

如果要从C/ c++程序中读取和写入MATLAB数据,请使用MATLAB C API读取mat文件数据

功能

墨西哥人 构建MEX函数或引擎应用程序
dbmex 开启墨西哥文件调试UNIX平台

C mex API

mexFunction C/ c++ MEX函数的入口点,使用C矩阵API构建
mexFunctionName 当前MEX函数名称
mexAtExit 注册功能调用时,MEX功能清除或MATLAB终止
mexCallMATLAB 调用MATLAB函数、用户自定义函数或MEX函数
mexCallMATLABWithTrap 调用MATLAB函数、用户自定义函数或MEX文件,捕获错误信息
mexEvalString 执行MATLAB调用方工作区中的命令
mexEvalStringWithTrap 执行MATLAB命令,并捕获错误信息
mexGetVariable 从指定工作区复制变量
mexGetVariablePtr 指向另一个工作区变量的只读指针
mexPutVariable 数组从MEX函数到指定的工作空间
mexGet 指定图形属性的值
mexSet 设置指定图形属性的值
mexPrintf ANSICprintf样式的输出例程
mexErrMsgIdAndTxt 显示带有标识符的错误消息并返回到MATLAB提示
mexWarnMsgIdAndTxt 带有标识符的警告消息
mexIsLocked 确定MEX文件是否被锁定
mexLock 禁止从内存中清除MEX文件
mexUnlock 允许从内存中清除MEX文件
mexMakeArrayPersistent 在MEX文件完成后保持数组
mexMakeMemoryPersistent 使内存由MATLAB在MEX函数完成后继续存在

主题

编写C MEX函数

创建C源MEX文件

属性arrayProduct用C矩阵API构建的C MEX函数。

表的MEX函数源代码示例

链接到MEX函数示例的源代码。

MATLAB数据

使用mxArray在MEX文件中。

内存管理问题

管理规则mxArray内存。

用C矩阵API创建c++ MEX函数

在创建用C Matrix API构建的MEX函数时,需要考虑的c++语言问题。

C MEX文件中的错误处理

方法打印错误信息mexErrMsgIdAndTxt函数。

在MEX文件中处理大文件I/O

如何在MEX文件中使用64位文件I/O。

大多数派生类的测试

如何从MEX文件输入参数中排除内置类型的子类。

C Matrix API版本

升级MEX文件以使用交错复杂API

MATLAB版本9.4 (R2018a)支持复数的交错表金宝app示。

将MEX文件升级为使用64位API

MATLAB Version 9.2 (R2017a)默认使用64位API构建MEX文件。

升级MEX文件以使用图形对象

MATLAB Version 8.4 (R2014b)将句柄的数据类型从对象

共享MEX文件

在MEX文件中记录生成信息

此示例显示如何记录xtimesy在Windows上构建的MEX文件®平台使用微软®Visual c++®编译器。

故障排除

构建错误

MEX失败时如何获取帮助

要帮助诊断编译器设置和生成错误,请调用墨西哥人带有verbose选项-v的函数。

编译MEX文件失败

编译MEX文件失败时的处理方法。

解决MEX API不兼容问题

有关警告和错误消息的更多信息。

用MinGW-w64编译C/ c++ MEX文件的故障排除和限制

用MinGW-w64编译器构建的MEX文件的故障排除。

符号mexFunction未解析或未定义

每个MEX文件都需要一个mexFunction

运行时错误

无效的MEX文件错误

当你得到一个无效的MEX文件错误时该怎么做。

MEX版本兼容性

为获得最佳效果,请运行用MATLAB版本构建的MEX文件。

MEX平台兼容性

如果从其他来源获得二进制MEX文件,请确保该文件是针对要在其上运行的同一平台编译的。

MEX API不是线程安全的

不要在单独的线程上从MEX文件调用MATLAB的单个会话。

MEX文件分割故障

当MEX文件导致分段违反或断言时该怎么办。

MEX文件产生错误的结果

当MEX生成错误答案时该怎么办?

调试

在微软Windows平台上调试

使用Microsoft Visual Studio进行调试的建议®

Mac平台调试

此示例显示如何调试上的MEX文件Mac平台。

Linux平台上的调试

本示例介绍如何在Linux下调试MEX文件®平台。