KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am linking a (Python extension) library that embeds the Matlab engine with the following command (generated using cmake) 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 resulting in $ 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) However, when I try to use the library, I get an error message: ImportError: dlopen(./library.so, 2): Library not loaded: @loader_path/libmex.dylib Referenced from: ./library.so Reason: image not found I believe the problem stems from the fact that the linker includes the matlab dylib files in the form @loader_path/libeng.dylib rather than using the full path, even though I give the full path to g++ . How can I force the linker to use the full path? I know one solution is to use export DYLD_LIBRARY_PATH=/Applications/MATLAB_R2009b.app/bin/maci64:$DYLD_LIBRARY_PATH which is where those library files reside, but I'd like to avoid that as it causes some other problems.
Tags (comma-separated)
Save Edits
Cancel