Mex 'include' path merged with working directory path
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
John Anderson
el 8 de Feb. de 2019
Comentada: Walter Roberson
el 8 de Feb. de 2019
I am attempting to compile a mex function. For some reason, the 'include' path I specify gets merged into my current working directory path. I don't recall seeing this before, although I spend most of my time in Linux and am working short-term on a Windows machine.
Below is the error message I get. Note that the line that is cited in error has the correct path but it is somehow interpreted to the wrong path.
Error using mex
C:\Users\john.anderson\Documents\MATLAB_Toolboxes\KWtools\TestPost\Matlab_mexa64\source\Files\Altair\2017\hm\include\ not found;
check that you are in the correct current folder, and check the spelling of
'C:\Users\john.anderson\Documents\MATLAB_Toolboxes\KWtools\TestPost\Matlab_mexa64\source\Files\Altair\2017\hm\include\'.
Error in makemex64 (line 30)
mex -v CC=g++ -O -DSNPRINTF=snprintf -IC:\Program Files\Altair\2017\hm\include\ ./RunHyper.c ...
0 comentarios
Respuesta aceptada
Walter Roberson
el 8 de Feb. de 2019
mex -v CC=g++ -O -DSNPRINTF=snprintf -IC:\Program Files\Altair\2017\hm\include\ ./RunHyper.c ...
means
mex ...
-v ...
CC=g++ ...
-O ...
-DSNPRINTF=snprintf ...
-IC:\Program ...
Files\Altair\2017\hm\include\ ...
./RunHyper.c ...
where each of those is a separate input argument.
The space in the directory name is confusing it.
You should be using
-I"C:\Program Files\Altair\2017\hm\include\"
but since some of that part is automatically generated, it sometimes is not worth fighting it to force it to generate quotes at the proper places. Much of the time it turns out to be easier to move include directories and libraries to paths that do not include spaces (or non-ANSII characters for that matter.)
2 comentarios
Walter Roberson
el 8 de Feb. de 2019
Linux is even worse, with / and null being the only characters forbidden in a filename -- but Linux shell script programmers have been burned often enough that they routinely put in quotes.
No, it turns out that mex.m is badly programmed, and although it accepts separated arguements, it slams tokens together into one long character vector and system()'s it, without bothering to put in protective quotes where appropriate :( :(
Más respuestas (0)
Ver también
Categorías
Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!