Problem in specifying dependent library files by using MEX switches

조회 수: 2 (최근 30일)
AP
AP 2013년 2월 13일
답변: Yasuhiro Takagi 2020년 5월 24일
I am trying to find the instructions for specifying the dependent library files as well as the path for compiling a c++ MEX file. Unfortunately, I wasn't successful and I couldn't get it to work. I don't know how to use:
COMPFLAGS -I -l
Could someone please instruct me how to use these switches in Windows for the following case?
/LIBPATH:"C:\Program Files (x86)\lib\" / l64.lib cr.lib al.lib
Thanks,
Ahmad

답변 (4개)

Kaustubha Govind
Kaustubha Govind 2013년 2월 13일
You should just need to add them on to the "mex" command. Probably something like:
>> mex myfile.c -L"C:\Program Files (x86)\lib\" -l l64.lib -l cr.lib -l al.lib
  댓글 수: 3
James Tursa
James Tursa 2013년 2월 13일
Sometimes the mex command gets confused with spaces imbedded in strings when using command line syntax. I would try the function syntax instead. E.g. something like:
mex('myMEX.cpp','-I','"C:\Program Files (x86)\FLRecon\Include\"','-L','"C:\Program Files (x86)\FLRecon\lib\"','-l','l64.lib','-l','cr.lib','-l','al.lib')
AP
AP 2013년 2월 13일
Thanks James. Your comment 100% makes sense to me. However, I get the following error:
C:\PROGRA~1\MATLAB\R2012B\BIN\MEX.PL: Error: 'C:\Program' not found.

댓글을 달려면 로그인하십시오.


Jan
Jan 2013년 2월 13일
편집: Jan 2013년 2월 13일
I had a similar problem with a space in the CFLAGS for Linux: Too add 'CFLAGS="\$CFLAGS -std=c99"' Matlab needs:
mex('CFLAGS="\$CFLAGS', '-std=c99"', ...)
The MEX command is too smart for parsing the non-functional form, so try this:
mex('myfile.c', '-L"C:\Program', 'Files', '(x86)\lib\"', '-l l64.lib', ...
'-l cr.lib', '-l al.lib')
This looks as strange as it is. Perhaps the spaces after "-l" are a problem also. I think they should be omitted.
I'm convinced, that MEX has been grown beyond a fair level of usability: Under Windows mex -setup creates a .bat file, which is not called as batch file, but parsed and evaluated in a perl script. Actually starting a compiler is trivial and a handmade M-function would be cleaner and more stable.
  댓글 수: 2
AP
AP 2013년 2월 13일
편집: AP 2013년 2월 13일
Jan, I tried your solution as following:
mex('myMEX.cpp','-I"C:\Program','Files','(x86)\FLRecon\include\"','-L"C:\Program','Files','(x86)\FLRecon\lib"','-l lp64.lib','-l cr.lib','-l al.lib')
This is what MATLAB complains about:
cl : Command line warning D9024 : unrecognized source file type 'Files\MATLAB\R2012b\extern\include -IC:\Program', object file assumed
DNDEBUG -DMX_COMPAT_32 myMEX.cpp
c1xx : fatal error C1083: Cannot open source file: 'Files\MATLAB\R2012b\simulink\include /O2 /Oy- /DNDEBUG -DMX_COMPAT_32 myMEX.cpp': No such file or directory
C:\PROGRA~1\MATLAB\R2012B\BIN\MEX.PL: Error: Compile of 'myMEX.cpp' failed.
Error using mex (line 206)
Unable to complete successfully.
Kaustubha Govind
Kaustubha Govind 2013년 2월 14일
What about:
mex('myMEX.cpp','-I"C:\Program','Files','(x86)\FLRecon\include\"','-L"C:\Program Files (x86)\FLRecon\lib"','-l lp64.lib','-l cr.lib','-l al.lib')
(I'm wondering if maybe the -L option knows how to deal with the double-quote)

댓글을 달려면 로그인하십시오.


Manex Aguirrezabalaga
Manex Aguirrezabalaga 2019년 9월 30일
Hi
I'm experiencing the exact same problem.
Matlab R2019B, Visual Studio 2015.
cl : Command line warning D9021 : no action performed
cl : Command line warning D9024 : unrecognized source file type 'Files\MATLAB\R2019b\extern\include -IC:\Program', object file assumed
Incidentally, it has relationship with "Program Files" being part of the MATLAB source folder.
Any workaround after 6 years?

Yasuhiro Takagi
Yasuhiro Takagi 2020년 5월 24일
put -I, -L option in path string
mex '-IC:\Program Files\MATLAB\...' '-LC:\Program Files\MATLAB' -lscanuti hoge.cpp
If you get that by a command, like this.
mex_command = ['mex ''-I' matlabroot '\toolbox\vnt\vntblks\include\candatatype''']
It works with 2015a.

카테고리

Help CenterFile Exchange에서 Write C Functions Callable from MATLAB (MEX Files)에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by