I have build the mexFunction for this source code. However, I have got this error when I call the main function
argc 3argv --tfError using callFunmain function causes an error
#include <mex.h>#include <matrix.h>#include<stdio.h>#include <math.h>#include <limits.h>#include <assert.h>#include <string.h>#include <stdlib.h>#include <time.h>#include "ants.h"#include "utilities.h"#include "InOut.h"#include "TSP.h"#include "timer.h"#include "ls.h"// ========================================================================/* --- main program ------------------------------------------------------ */// ========================================================================int callFun(int argc, char *argv[]){ printf ( "\nargc %d",argc); printf ( "\nargv %s",argv[1]); long int i; start_timers();}
// ========================================================================/* --- mex function----------------------------------------------------- */// ========================================================================void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){ int argc = 0; char **argv; int i, result; argc = nrhs; argv = (char **) mxCalloc( argc, sizeof(char *) ); for (i = 0; i < nrhs; i++){ if( !mxIsChar( prhs[i] ) ){ mexErrMsgTxt("Input must be of type char."); return; } argv[i] = mxArrayToString( prhs[i] ); } result = callFun( argc, argv ); for( i=argc-1; i<=0; i-- ) mxFree( argv[i] ); mxFree( argv ); if( result ) mexErrMsgTxt("main function causes an error");}
Call the function:
callFun('callFun','--tf', 'tsp',
the problem is in this line:
printf ( "\nargv %s",argv[1]);
, but, I could not understand why?
Best Answer