主要内容

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函数必须在MATLAB R2017b或更早的版本中运行,或者你更喜欢在C语言中工作,那么使用C矩阵API.和C MEX 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. 启用MEX文件调试unix.平台

c mex api.

梅功能 使用C矩阵API构建的C / C ++ MEX功能的入口点
mexfunctionname. 当前MEX函数名
Mexatexit. MEX函数清除或寄存函数呼叫马铃薯草终止
mexCallMATLAB 调用马铃薯草功能,用户定义的函数或MEX函数
mexcallmatlabwithtrap. 调用马铃薯草函数、用户定义函数或MEX文件并捕获错误信息
mexEvalString 执行马铃薯草调用者工作区中的命令
mexEvalStringWithTrap 执行马铃薯草在调用者工作区中执行命令并捕获错误信息
mexGetVariable 来自指定工作区的变量副本
mexGetVariablePtr 从另一个工作区的可读指针到变量
MexputVariable. 数组从MEX函数到指定的工作空间
mexGet 指定图形属性的值
MexSet. 设置指定图形属性的值
mexPrintf ANSI.CPrintF样式输出例程
mexerrmsgidandtxt. 用标识符显示错误消息并返回马铃薯草迅速的
mexWarnMsgIdAndTxt 带有标识符的警告消息
Mexislocked. 确定MEX文件是否已被锁定
mexLock 防止从内存中清除MEX文件
Mexunlock. 允许从内存中清除MEX文件
MexmakeArraypersistent 在MEX文件完成后使数组保持
mexMakeMemoryPersistent 使内存分配为马铃薯草在MEX函数完成后保持

主题

编写C MEX函数

创建C源MEX文件

此示例显示了如何创建arrayProductC MEX功能用C矩阵API构建。

表的MEX函数源代码示例

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

MATLAB数据

使用mxarray.在MEX文件中。

内存管理问题

规则管理mxarray.记忆。

使用C Matrix API创建C ++ MEX函数

C ++语言问题需要考虑使用C矩阵API构建的MEX函数。

在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版本9.2 (R2017a)默认使用64位API构建MEX文件。

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

MATLAB版本8.4(R2014B)将句柄的数据类型更改为图形对象双倍的对象

墨西哥人分享文件

文档在MEX文件中构建信息

这个例子展示了如何记录XTIMESY.MEX文件构建在Windows上®使用Microsoft的平台®Visual C ++®编译器。

故障排除

构建错误

当MEX失败时获得帮助

要帮助诊断编译器设置并构建错误,请调用梅克斯函数带有verbose选项-v。

编译MEX文件失败

当编译MEX文件失败时应该做什么。

解决MEX API不兼容问题

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

故障排除和限制编译Mingw-W64的C / C ++ MEX文件

使用MingW-W64编译器构建的MEX文件故障排除。

符号MEXFUNCTION未解决或未定义

每个MEX文件都需要一个梅功能

运行时错误

无效的MEX文件错误

当您获得无效的MEX文件错误时要做什么。

墨西哥人版本兼容性

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

墨西哥人平台的兼容性

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

MEX API不是线程安全的

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

MEX文件分段故障

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

MEX文件生成错误结果

当你的mex产生错误的答案时要做什么。

调试

在Microsoft Windows平台上调试

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

在Mac平台上调试

此示例显示如何调试MEX文件苹果电脑平台。

Linux平台上的调试

此示例显示如何在Linux上调试MEX文件®平台。