在Matlab中调用C ++例程

萨拉·迪恩

我在C ++中有很长的代码,我想从MATLAB中调用它。

我读到,使用MEX文件,可以从MATLAB调用大型的预先存在的C / C ++和Fortran例程,而无需将其重写为MATLAB函数。

但是,MEX文件很繁琐,显然应该更改整个代码。此外,我在从MATLAB的命令行调用C / C ++编译器时遇到问题。特别是,MATLAB询问

Select a compiler: 
[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\MATLAB\R2013a\sys\lcc
[2] Microsoft Visual C++ 2010 in D:\Program Files\Microsoft Visual Studio 10.0

但是我的代码是用Borland c ++编写的,但是MATLAB无法将Borland识别为编译器。

有什么方法比我现在做的要简单,可以通过MEX文件将C / C ++代码集成到MATLAB中吗?

洛克希AR

如user2485710所述,您应该使用MEX接口调用现有的C ++代码。MEX接口基本上是您现有C ++代码的包装。

例如,如果您的调用是调用add.c,该函数将两个数字相加,则您将无法直接在MATLAB中对其进行调用。你的包装纸应该看起来像这样,

#include "mex.h"
void mexFunction( int nlhs, mxArray *plhs[],
              int nrhs, const mxArray *prhs[]) { // Standard gateway function
    double *a = mxGetPr(prhs[0]);
    double *b = mxGetPr(prhs[1]);
    double c = add(a,b);
    mxSetPr(plhs[0], &c);
}

这是一个说明性的示例,您可能必须阅读我所使用的每个功能的文档。您不必担心编译器。大多数C ++程序均可在所有编译器中运行。在列表中选择一个编译器并使用它。有一些限制,但我不知道有人打过这个用例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章