Tôi có một ứng dụng, gọi nó là Animal.app
. Bên trong thư mục Contents/Frameworks
của nó là một khuôn khổ, nói Mammal.framework
. Và bên trong thư mục Versions/A/Frameworks
của khung, tôi có dog.dylib
. Tên cài đặt của dog.dylib
là @ rpath/dog.dylib. Đối với cài đặt "Runpath Search Paths"
của khung, tôi đã chỉ định @loader_path/../Frameworks
. (Lập luận của tôi cho rằng thiết lập cuối cùng là "nạp" của dylib sẽ là nhị phân của khuôn khổ này, tại đường dẫn Mammal.framework/Versions/A/Mammal
.)@rpath cho thư viện động được nhúng trong một khung
tôi nhận được một thông báo lỗi khi chạy:
Dyld Error Message:
Library not loaded: @rpath/dog.dylib
Referenced from: /Volumes/VOLUME/*/Animal.app/Contents/MacOS/../Frameworks/Mammal.framework/Versions/A/Mammal
Reason: image not found
tôi đã đọc tài liệu "Thư viện phụ thuộc Run-Path" của Apple và bài đăng trên blog của Mike Ash trên @rpath
, nhưng tôi vẫn không thể nhìn thấy những gì tôi đang làm sai.
Có, phải rõ ràng: Thư mục Cài đặt cho cả dylib lồng nhau và khung mẹ của nó phải là "@rpath". Khung công tác mẹ sau đó bao gồm "@ loader_path/Frameworks" trong Đường dẫn tìm kiếm Runpath của nó (vì dylib kết thúc với tư cách là anh chị em của thư mục Khung); ứng dụng sử dụng khung này bao gồm "@loader_path /../ Frameworks" (vì tệp thực thi nằm trong MacOS). Ứng dụng cũng có thể sử dụng '@ executable_path', nhưng' @ loader_path' có vẻ lạnh hơn :-) – natevw
Tôi không hiểu bạn thực sự đã làm gì để làm cho nó hoạt động ... giải thích cho tôi như tôi là 6. –
@ Prof.Falken: Trong cài đặt xây dựng cho khung, trong Liên kết, có một cài đặt được gọi là "Đường dẫn tìm kiếm đường chạy". Tôi đặt giá trị của nó thành '@ loader_path/Frameworks'. – JWWalker