在Matlab中调用c ++例程

Sar*_*ean 4 c++ matlab mex

我在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
Run Code Online (Sandbox Code Playgroud)

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

有没有比我目前更简单的方法,通过MEX文件在MATLAB中集成C/C++代码?

Lok*_* R. 6

如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);
}
Run Code Online (Sandbox Code Playgroud)

这是一个说明性示例,您可能必须阅读我使用的每个函数的文档.您无需担心编译器.大多数C++程序适用于所有编译器.选择列表中的一个编译器并使用它.有一些限制,但我不知道有谁打过这个用例.