在创建Matlab MEX函数时,是否将mexFunction放在c ++头文件或源文件中?

时间:2017-06-09 16:46:57

标签: c++ matlab mex

我正在使用Matlab的mex函数来运行一些c ++源文件。我有几个.cpp文件进行不同的转换。我想制作一个将调用这些.cpp文件的头文件。我在网上看到的所有例子(到目前为止)都只使用mex和.cpp文件。我的问题是,我在哪里使用:

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

在标题中?源文件?如果它在头文件中,我是否将它放在一个类中?对于像这样链接文件我有点新鲜。

1 个答案:

答案 0 :(得分:1)

我提供的示例来自一年前编写Matlab绑定时的C或C ++代码。 Mex是Matlab可执行文件,它们依赖于平台,它们与不同的平台和版本不兼容。

在源文件中添加mex.h。添加包含MATLAB API函数声明的C或C ++头文件mex.h

示例代码:

/* This header is the must and its the main interface to talk with Matlab*/
#include "mex.h" 
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])     
{
    mexPrintf("howdyyyy!\n"); 
    return;
}

您可以找到位于matlab/extern/include的MATLAB的头文件。您也可以查看matrix.h文件。

如果您使用Matlab编辑器,那么您可以这样做,下一步是编译。在Matlab控制台上,输入命​​令

编译yourfile.cpp
$ mex yourfile.cpp

编译MEX函数,你可以像任何M文件函数一样从Matlab调用它,例如

<强>输出

$ yourfile
howdyyyy!