我在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++代码?
如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++程序适用于所有编译器.选择列表中的一个编译器并使用它.有一些限制,但我不知道有谁打过这个用例.
| 归档时间: |
|
| 查看次数: |
1180 次 |
| 最近记录: |