C MEX文件的应用程序

编写C程序与MATLAB工作®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语言中,那么在使用功能体基质API和C MEX API。这些API使用MATLABmxArray数据结构。此页面上的功能和主题是基于mxArray

注意

选择从任一C矩阵API或MATLAB数据API函数;你不能从这些API混合功能。

建立你的源文件到使用一个可执行程序MEX功能。您也可以与其他MATLAB用户MEX文件。

有关编写S-功能的信息,请参阅您的Simulink万博1manbetx®文档。

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

如果你有一个C / C ++程序,并想从程序中调用MATLAB函数,然后使用引擎API之一。

如果你想读的和从C / C ++程序写入数据MATLAB,然后使用MATLAB C API来读取MAT文件数据

功能

MEX 构建MEX功能或引擎应用
dbmex 启用MEX文件调试上UNIX平台

C MEX API

mexFunction 入口点用C矩阵API构建的C / C ++ MEX函数
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文件

这个例子显示了如何创建arrayProductC MEX函数与C矩阵API构建。

MEX功能的源代码示例的表

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

MATLAB数据

运用mxArray在MEX文件。

内存管理问题

规则管理mxArray记忆。

创建体基质API C ++ MEX函数

C ++语言的问题创造与C矩阵API构建MEX功能时需要考虑的。

在C MEX文件错误处理

使用打印错误信息mexErrMsgIdAndTxt功能。

我处理大型文件/ O在MEX文件

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

测试对于大多数的派生类

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

体基质API版本

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

MATLAB 9.4版(R2018a)支持复数的交错表示万博1manbetx。

升级MEX文件使用64位API

MATLAB 9.2版本(R2017a)建立与默认情况下,64位API MEX文件。

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

MATLAB版8.4(R2014b)把手的数据类型,从改变为图形对象宾语

分享MEX文件

在MEX文件文档构建信息

这个例子说明了如何将文件xtimesyMEX文件建立在Windows®使用微软平台®VISUAL C ++®编译器。

故障排除

生成错误

获得帮助时MEX失败

为了帮助诊断编译器设置和构建错误,请拨打MEX用详细选项-v功能。

编译MEX文件失败

编译MEX文件失败时该怎么办。

故障排除MEX API不兼容

警告和错误消息的详细信息。

故障诊断和限制编译C / C ++ MEX文件使用MinGW-W64

故障排除MEX文件建有MinGW的-W64编译器。

符号mexFunction未解决或没有定义

每个MEX文件需要一个mexFunction

运行时错误

无效的MEX文件错误

当你得到一个无效的MEX文件出错怎么办。

MEX版本兼容性

为了达到最佳效果,运行MEX文件建立与MATLAB版本。

MEX平台兼容性

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

MEX API不是线程安全的

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

MEX文件分割故障

怎么办时,一个MEX文件会导致分段违例或断言。

MEX文件生成不正确的结果

怎么办时,你的MEX产生错误的答案。

调试

调试在Microsoft Windows平台

建议使用Microsoft Visual Studio调试®

调试在Mac平台

这个例子说明如何在调试MEX文件苹果电脑平台。

调试Linux平台

这个例子说明了如何在Linux上调试MEX文件®平台。