我連接一個(Python擴展)庫嵌入用下面的命令Matlab引擎造成鏈接到動態庫Mac上與完整路徑
$ 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)
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
(使用cmake生成)
然而,當我嘗試使用圖書館,我得到一個錯誤信息:
ImportError: dlopen(./library.so, 2): Library not loaded: @loader_path/libmex.dylib
Referenced from: ./library.so
Reason: image not found
我相信該問題源於鏈接器包含@loader_path/libeng.dylib
形式的matlab dylib文件,而不是使用完整路徑,儘管我給出了g++
的完整路徑。我如何強制鏈接器使用完整路徑?
我知道一個解決方案是使用
export DYLD_LIBRARY_PATH=/Applications/MATLAB_R2009b.app/bin/maci64:$DYLD_LIBRARY_PATH
這也正是這些庫文件存在,但我想,以避免因爲它會導致一些其他問題。
:請參考以下鏈接 [Add_libray] [1] [1]我的回答:http://stackoverflow.com/questions/4876740/xcode-keeps-searching-dylib-at-wrong-路徑/ 19245310#19245310 – itechnician 2013-10-08 10:35:53