C语言和MATLAB联合编程的问题
最近正在做一个C语言和MATLAB联合编程生成mex file使得MATLAB可以直接调用的程序,但是有一个问题解决不了,求各位大神帮忙,O(∩_∩)O谢谢。因为写的main程序是带有参数的,然后为了不改变太多,我在网上找到一个方法,就是将MATLAB里面的参数直接传递给argc和argv,然后把main函数改名,然后用argc和argv来调用main函数。
但是我测试了一下,好像有一些问题。
int argc = 0;
char **argv;
int i = 0;
argc = nrhs;
argv = (char **) mxCalloc( argc, sizeof(char *) );
for( i=0; i < argc; i++)
{
if( !mxIsChar( prhs[i] ) )
{
mexErrMsgTxt("Input must be of type char.");
return;
}
argv[i] = mxArrayToString( prhs[i] );
//printf("argv[%d] = %s\n",i,argv[i]);
}
这一段之后,argv确实能打印出来传递过来的参数信息,然后我在main函数里面试着用一个循环打印出argv[i]里面的信息:
int mex_main(int argc,char *argv[])
{
int j;
printf("argc = %d\n",argc);
for ( j = 0; j < argc; j++ )
{
printf("argv[%d] = %s\n",j, argv[j]);
return 0;
}
}
但是调用之后的结果显示,argc是对的,但是argv只打得出来argv[0], 这是为什么呢? 麻烦麻烦,谢谢各位。