Mex 'include' path merged with working directory path
16 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Walter Roberson
2019 年 2 月 8 日
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 件のコメント
Walter Roberson
2019 年 2 月 8 日
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 :( :(
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!