tôi đang liên kết một (phần mở rộng Python) thư viện nhúng engine với lệnh sau đây Matlab (được tạo ra sử dụng cmake)Liên kết đến một thư viện động trên máy Mac với đường dẫn đầy đủ
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
dẫn đến
$ 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)
Tuy nhiên, khi tôi cố gắng sử dụng thư viện, tôi nhận được một thông báo lỗi:
ImportError: dlopen(./library.so, 2): Library not loaded: @loader_path/libmex.dylib
Referenced from: ./library.so
Reason: image not found
tôi tin vấn đề xuất phát từ thực tế là mối liên kết bao gồm các tệp dylib matlab dưới dạng @loader_path/libeng.dylib
thay vì sử dụng đường dẫn đầy đủ, mặc dù tôi cung cấp đường dẫn đầy đủ đến g++
. Làm thế nào tôi có thể buộc các mối liên kết để sử dụng đường dẫn đầy đủ?
Tôi biết một giải pháp là sử dụng
export DYLD_LIBRARY_PATH=/Applications/MATLAB_R2009b.app/bin/maci64:$DYLD_LIBRARY_PATH
đó là nơi các tập tin thư viện cư trú, nhưng tôi muốn tránh điều đó vì nó gây ra một số vấn đề khác.
Vui lòng tham khảo câu trả lời của tôi trong liên kết này [Add_libray] [1] [1]: http://stackoverflow.com/questions/4876740/xcode-keeps-searching-dylib-at-wrong- path/19245310 # 19245310 – itechnician