主要内容

C MEX文件应用程序

编写使用MATLAB的C程序®R2017b或更早版本,使用MX阵列

您可以从MATLAB命令行调用自己的C或c++程序,就像它们是内置函数一样。这些程序称为MEX函数,函数名就是MEX文件名。MEX函数并不适用于所有应用程序。MATLAB是一个高生产率的环境,它的专长是消除耗时的、低层次的编译语言编程。一般来说,用MATLAB编程。除非应用程序需要,否则不要使用MEX函数。

要创建MEX函数,请使用MATLAB api编写程序。这些库中的函数方便了MEX函数和工作空间之间的数据传输。要选择MATLAB API,请考虑以下内容。

  • MaWorks推荐使用现代C++特性创建MEX函数,如MATLAB数据API。有关更多信息,请参见c++墨西哥人的应用程序

  • 如果你的MEX函数必须在MATLAB R2017b或更早的版本中运行,或者你更喜欢在C语言中工作,那么使用C矩阵API和C MEX API。这些api使用MATLABMX阵列数据结构。本页的功能和主题是基于MX阵列

请注意

从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

MEX函数 使用C Matrix API构建的C/C++MEX函数的入口点
mexFunctionName 当前MEX函数名
美沙酮出口 当MEX函数清除或MATLAB终止
mexCallMATLAB 调用MATLAB函数、用户定义函数或MEX函数
mexCallMATLABWithTrap 调用MATLAB函数、用户定义函数或MEX文件并捕获错误信息
mexEvalString 处决MATLAB调用方工作区中的命令
mexEvalStringWithTrap 处决MATLAB在调用者工作区中执行命令并捕获错误信息
mexGetVariable 从指定工作区复制变量
mexGetVariablePtr 指向另一个工作区中变量的只读指针
mexPutVariable 数组从MEX函数到指定的工作空间
mexGet 指定图形属性的值
梅克塞特 设置指定图形属性的值
mexPrintf ANSICPRINTF样式输出例程
MEXERMSGIDANDTXT 用标识符显示错误消息并返回MATLAB促使
mexWarnMsgIdAndTxt 带有标识符的警告消息
Mexislock 确定MEX文件是否已锁定
mexLock 防止从内存中清除MEX文件
梅森洛克 允许从内存中清除MEX文件
mexMakeArrayPersistent 在MEX文件完成后使数组保持
mexMakeMemoryPersistent 使内存分配为MATLAB在MEX函数完成后保持

主题

编写C MEX函数

创建C源MEX文件

此示例显示如何创建arrayProduct使用C Matrix API构建的C MEX函数。

表的MEX函数源代码示例

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

MATLAB数据

使用MX阵列在MEX文件中。

内存管理问题

规则管理MX阵列记忆力

用C语言API创建C++ MeX函数

C++语言在创建用C矩阵API创建MEX函数时要考虑的问题。

C-MEX文件中的错误处理

使用打印机打印错误信息MEXERMSGIDANDTXT函数。

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

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

对最派生类的测试

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

C矩阵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在Windows上构建的MEX文件®使用Microsoft的平台®Visual C++®编译器。

故障排除

构建错误

当MEX失败时获得帮助

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

编译MEX文件失败

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

解决MEX API不兼容问题

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

使用MinGW-w64编译C/C++MEX文件的疑难解答和限制

对使用MinGW-w64编译器生成的MEX文件进行疑难解答。

符号MEX函数未解析或未定义

每个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文件®平台。