Const char into mex files
    9 views (last 30 days)
  
       Show older comments
    
    Jorge Mario Guerra González
      
 on 12 Sep 2016
  
    
    
    
    
    Commented: James Tursa
      
      
 on 14 Sep 2016
            Hello,
I'd like to know how can I export my Matlab strings to use them whitin a MEX file, as it follows. I'm quite new using MEX files and I'd really appreciate any help
I have in matlab this variable
folder = 'C:\Users\Jorgue Guerra\Desktop\Sample_1'
then I want to export that value to use in C, I've tried something like this.
void mexFunction(int nlhs, mxArray *plhs[],   //output
       int nrhs, const mxArray *prhs[]){   //input
   const char *folder= (const char)mxGetData(prhs[0])
   //.....other code using folder var
  }
I know it can't be as simple as that, but I have no clue where to begin
2 Comments
  Walter Roberson
      
      
 on 13 Sep 2016
				At the very least it would have to be
     const char *folder= (const char *)mxGetData(prhs[0]);
because mxGetData returns a pointer, not a character.
  James Tursa
      
      
 on 14 Sep 2016
				
      Edited: James Tursa
      
      
 on 14 Sep 2016
  
			Even this won't work, because MATLAB char data is 2-bytes per character, whereas C char data is 1-byte per character. So you need something like the mxArrayToString API function to do an actual allocation + copy. Or one could use this to access the MATLAB char data manually:
     const unsigned short *folder= (const unsigned short *)mxGetData(prhs[0]);
Accepted Answer
  Jorge Mario Guerra González
      
 on 13 Sep 2016
        1 Comment
  James Tursa
      
      
 on 14 Sep 2016
				FYI, that link is a bit misleading. The memory for output_buf does not become part of the plhs[0] output as a result of the mxCreateString call, so it should in fact be released just like the memory for input_buf is released. I.e., this line should appear at the end of the code:
mxFree(output_buf);
More Answers (0)
See Also
Categories
				Find more on Write C Functions Callable from MATLAB (MEX Files) in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
