我正在寻找用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 ++中定义它?
答案 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[]);