Calling Other Functions in Mex-Files - GNU Octave
Description: GNU Octave

Previous: Sparse Matrices with Mex-Files, Up: Mex-Files

#### A.2.7 Calling Other Functions in Mex-Files

It is also possible call other Octave functions from within a mex-file using `mexCallMATLAB`. An example of the use of `mexCallMATLAB` can be see in the example below

         #include "mex.h"

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

           mexPrintf ("Hello, World!\n");

           mexPrintf ("I have %d inputs and %d outputs\n", nrhs,
                      nlhs);

           if (nrhs < 1 || ! mxIsString (prhs[0]))
             mexErrMsgTxt ("function name expected");

           str = mxArrayToString (prhs[0]);

           mexPrintf ("I'm going to call the function %s\n", str);

           mexCallMATLAB (nlhs, plhs, nrhs-1, prhs+1, str);

           mxFree (str);
         }

If this code is in the file `myfeval.c`, and is compiled to `myfeval.mex`, then an example of its use is

         myfeval("sin", 1)
         a = myfeval("sin", 1)
         ⇒ Hello, World!
             I have 2 inputs and 1 outputs
             I'm going to call the interpreter function sin
             a =  0.84147

Note that it is not possible to use function handles or inline functions within a mex-file.