Borrar filtros
Borrar filtros

Compiling mex file that depends on external libraries with extension .so.n

8 visualizaciones (últimos 30 días)
I have written a file myprog.cpp and is to be compiled in MATLAB. The program has external library dependencies libnewfile1.so and libnewfile2.so.3. I compiled using following instruction from MATLAB command window.
mex myprog.cpp -lnewfile1.so -lnewfile2.so.3 -L"path to library folder"
I get he following error while compiling.
Error using mex
/usr/bin/ld: cannot find -lnewfile1
/usr/bin/ld: cannot find -lnewfile2.so.3
collect2: error: ld returned 1 exit status
Could anyone please tell me how to compile a cpp file that has external library dependencies?
Later I tried adding the path to LD_LIBRARY_PATH using setenv and getenv shows the above path in LD_LIBRARY_PATH. But still I get the same error.
  3 comentarios
Michael Mathew
Michael Mathew el 27 de Mayo de 2016
Editada: Michael Mathew el 27 de Mayo de 2016
No I still get the error:
Error using mex
/usr/bin/ld: cannot find -llibnewfile1.so
/usr/bin/ld: cannot find -llibnewfile2.so.3
collect2: error: ld returned 1 exit status
Michael Mathew
Michael Mathew el 28 de Mayo de 2016
I did solve it. The problem was Matlab does not recognise libraries with extensions other than .so; Hence I renamed the library to .so and that solved the issue.

Iniciar sesión para comentar.

Respuestas (1)

Albert Hofkamp
Albert Hofkamp el 21 de Nov. de 2017
Bit late to the party, but the answer is that -l adds a "lib" prefix and a ".so" suffix to its argument, so linking with -Lpath/to/library/dir -lnewfile1 -lnewfile2 will do the trick.
Note that Matlab may add requirements to library-files such as position-independent code, which may or may not have been used while compiling the library.

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!

Translated by