2016-07-06 4 views
1

Я ищу C++/автономный код из функции MEX, который был написан в here. Можно ли легко сделать C++ автономно из файлов C++/MEX? если это возможно, все советы, чтобы сделать это проще и сделать это быстрее, оценили.Можно ли преобразовать код C++/MEX (Matlab) в автономный 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

Его легко, но не может быть сделано автоматическим способом, потому что для многих функций 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[]); 
+0

Что вы имеете в виду под управлением копии matlab? должен ли я иметь копию Matlab на компьютере, чтобы я всегда запускал код? он не может быть автономным тогда? – Ehsan

+2

Файлы Mex будут вызывать функции, которые должны вызываться только из текущей копии MATLAB. Например, функции, которые регистрируют память. С другой стороны, большинство файлов mex содержат понятный код C/C++, который можно изменить вручную, и вы можете без особых усилий преобразовать его в стандартные вызовы библиотеки. – Mikhail

Смежные вопросы