Compiling mex file that depends on external libraries with extension .so.n
Mostra commenti meno recenti
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 Commenti
Shouldn't you be using
-llibnewfile1.so -llibnewfile2.so
? It is a while since I have linked a mex against external libraries, though my case dlls, but you need to put the full name of the library file I am fairly sure.
Michael Mathew
il 27 Mag 2016
Modificato: Michael Mathew
il 27 Mag 2016
Michael Mathew
il 28 Mag 2016
Risposte (1)
Albert Hofkamp
il 21 Nov 2017
0 voti
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.
Categorie
Scopri di più su MATLAB Compiler in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!