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



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

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

在标头中? 源文件?如果它在头文件中,我是否将其放在类中?我对像这样将文件链接在一起有点陌生。

我提供的示例来自一年前编写 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 函数已编译,您可以从 Matlab 调用它,就像任何 M 文件函数一样,示例

输出。

$ yourfile
howdyyyy!

最新更新