estoy vinculación de un (extensión de Python) biblioteca que incorpora el motor de Matlab con el siguiente comando (generaron utilizando cmake)La vinculación a una biblioteca dinámica en un Mac con ruta completa
c++ -mmacosx-version-min=10.6 -bundle -headerpad_max_install_names -o library.so library.o /Applications/MATLAB_R2009b.app/bin/maci64/libeng.dylib /Applications/MATLAB_R2009b.app/bin/maci64/libmx.dylib -framework Python
resultando en
$ otool -L library.so
library.so:
@loader_path/libeng.dylib (compatibility version 0.0.0, current version 0.0.0)
@loader_path/libmx.dylib (compatibility version 0.0.0, current version 0.0.0)
/System/Library/Frameworks/Python.framework/Versions/2.6/Python (compatibility version 2.6.0, current version 2.6.1)
/opt/local/lib/gcc44/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.13.0)
/opt/local/lib/gcc44/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.0)
Sin embargo, cuando trato de utilizar la biblioteca, me sale un mensaje de error:
ImportError: dlopen(./library.so, 2): Library not loaded: @loader_path/libmex.dylib
Referenced from: ./library.so
Reason: image not found
creo el problema surge del hecho de que el enlazador incluye los archivos dylib de matlab en el formato @loader_path/libeng.dylib
en lugar de usar la ruta completa, aunque doy la ruta completa a g++
. ¿Cómo puedo forzar al enlazador a usar la ruta completa?
Sé que una solución es utilizar
export DYLD_LIBRARY_PATH=/Applications/MATLAB_R2009b.app/bin/maci64:$DYLD_LIBRARY_PATH
que es donde residen los archivos de la biblioteca, pero me gustaría evitar que, ya que causa otros problemas.
favor refiérase mi respuesta en este enlace [Add_libray] [1] [1]: http://stackoverflow.com/questions/4876740/xcode-keeps-searching-dylib-at-wrong- ruta/19245310 # 19245310 – itechnician