Matlab function handle as a argument called by C?

The MATLAB function x = fmincon(fun,x0,A,b) has a function handle @fun, when it compiles into a DLL, the function form is mlx- or mlf- as follow:
mlxFmincon(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[]);
mlfFmincon(int nargout, mxArray** X, mxArray** FVAL, mxArray** EXITFLAG, mxArray** OUTPUT, mxArray** LAMBDA, mxArray** GRAD, mxArray** HESSIAN, mxArray* FUN, mxArray* X_in1, mxArray* A, mxArray* B, mxArray* Aeq, mxArray* Beq, mxArray* LB, mxArray* UB, mxArray* NONLCON, mxArray* options, mxArray* varargin);
The problem is how can I call this function in the visual studio? Is it a way to use the function handle as a argument just like the function pointer in C? thanks.

Respuestas (1)

Walter Roberson
Walter Roberson el 29 de Jul. de 2012

0 votos

You cannot directly call MATLAB functions, as function handles do not point to machine code. You need to ask the MATLAB Engine to evaluate the expression.

4 comentarios

iar
iar el 29 de Jul. de 2012
What about C++ or the COM? Can it solve the problem in those methods?
Walter Roberson
Walter Roberson el 29 de Jul. de 2012
Only MATLAB can invoke MATLAB function handles. Function handles in MATLAB are a data structure that include (amongst other things) a reference to a data block that stores MATLAB code in a pre-parsed threaded-interpreter format that needs to be interpreted by the MATLAB Engine. MATLAB .m code does not compile down to machine language, only to linked data structures.
lin he
lin he el 30 de Jul. de 2012
is there a way to pass c++ functions to fmincon?
Walter Roberson
Walter Roberson el 30 de Jul. de 2012
No.
You might, however, be able to pass the function handle of a mex function or of something you have loadlibrary()'d

Iniciar sesión para comentar.

Categorías

Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Centro de ayuda y File Exchange.

Preguntada:

iar
el 29 de Jul. de 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by