Problem in specifying dependent library files by using MEX switches

2 visualizaciones (últimos 30 días)
AP
AP el 13 de Feb. de 2013
Respondida: Yasuhiro Takagi el 24 de Mayo de 2020
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

Respuestas (4)

Kaustubha Govind
Kaustubha Govind el 13 de Feb. de 2013
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 comentarios
James Tursa
James Tursa el 13 de Feb. de 2013
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 el 13 de Feb. de 2013
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.

Iniciar sesión para comentar.


Jan
Jan el 13 de Feb. de 2013
Editada: Jan el 13 de Feb. de 2013
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 comentarios
AP
AP el 13 de Feb. de 2013
Editada: AP el 13 de Feb. de 2013
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 el 14 de Feb. de 2013
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)

Iniciar sesión para comentar.


Manex Aguirrezabalaga
Manex Aguirrezabalaga el 30 de Sept. de 2019
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 el 24 de Mayo de 2020
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.

Categorías

Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by