Mam aplikację, nazwij ją Animal.app
. Wewnątrz folderu Contents/Frameworks
znajduje się framework, na przykład Mammal.framework
. A wewnątrz folderu Versions/A/Frameworks
mam dog.dylib
. Nazwa instalacji dog.dylib
to @ rpath/dog.dylib. W przypadku ustawienia architektury ramki "Runpath Search Paths"
podałem @loader_path/../Frameworks
. (Moje rozumowanie dla tego ostatniego ustawienia jest to, że „ładowarka” w dylib byłby binarny ram na ścieżce Mammal.framework/Versions/A/Mammal
).@ ścieżka dla biblioteki dynamicznej osadzonej w strukturze
otrzymuję komunikat o błędzie podczas uruchamiania:
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
I Przeczytałem dokumentację Apple "Run-Path Dependent Libraries" i blog Mike'a na temat wpisu na @rpath
, ale nadal nie widzę, co robię źle.
Tak, dla jasności: katalog instalacyjny dla zagnieżdżonego dylib i jego struktury nadrzędnej powinien być "@rpath". Struktura nadrzędna obejmuje wtedy "@ ścieżka_ciągania/struktury" w swoich ścieżkach przeszukiwania ścieżek (ponieważ kończy się jako rodzeństwo folderu Frameworki); aplikacja korzystająca z tej struktury obejmuje "@loader_path /../ Frameworks" (od kiedy plik wykonywalny jest wyłączony w MacOS). Aplikacja mogłaby równie dobrze używać '@_pliku_przeprowadzania', ale' @ ścieżka_poczta' wydaje się fajniejsza :-) – natevw
Nie rozumiem, co tak naprawdę zrobiłeś, aby to działało ... wyjaśnij mi to tak, jakbym był 6. –
@ Prof.Falken: W ustawieniach kompilacji dla frameworku, w obszarze Łączenie istnieje ustawienie o nazwie "Ścieżki wyszukiwania Ścieżka do pracy". Ustawiam jego wartość na "@ loader_path/Frameworks". – JWWalker