是否可以将C ++ / MEX(Matlab)代码转换为独立的C ++?

时间:2016-07-06 04:21:59

标签: c++ matlab

我正在寻找用here编写的MEX函数的C ++ /独立代码。是否可以从C ++ / MEX文件轻松地使C ++独立?如果可能的话,任何提示更容易做到并且做得更快的做法表示赞赏。

例如,如何将Mexfunction参数转换为C ++类型

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

  //declare variables
  mxArray *phi_out, *C_out, *label_out, *mxPhi, *C_in;
const mxArray *mxImg;

  const mwSize *mdims;
  double *img, *phi, *B, *mask, *C, *label;
  double *F;
  double usum, vsum, dthresh, lambda, rad;
  int    iter,countdown,display;
  long    dims[5];
  long    dimx, dimy, dimz, numdims;
  LL *Lz, *Ln1, *Ln2, *Lp1, *Lp2;
  LL *Sz, *Sn1, *Sn2, *Sp1, *Sp2;
  LL *Lin2out, *Lout2in;
// and .....

即。什么是mxArray,LL类型以及如何在C ++中定义它?

1 个答案:

答案 0 :(得分:0)

它很容易,但不能以自动方式完成,因为许多MATLAB特定的功能需要运行的MATLAB副本。如果你真的真的无法改变源代码,那么你可以编写一个从MATLAB函数调用到它们的C等价物的填充层,但这不是一个好主意。

mxArray可以映射到void*,在MEX中可以映射所有内容。

The entry in `matrix.h` looks like:
/*
 * Forward declaration for mxArray
 */
typedef struct mxArray_tag mxArray;

/*
 * Type representing the signature for MEX functions.
 */
typedef void (*mxFunctionPtr) (int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);