lookups Mes paquets .app ressemble à ceci:Ensembles et dylib
MyApp.app/
Contents/
MacOS/
MyApp
libA.dylib
libB.dylib
libC.dylib
PlugIns/
PlugIn1.bundle/
...bundle contents
PlugIn2.bundle/
...bundle contents
Les deux PlugIn1.bundle et PlugIn2.bundle sont liés contre libA.dylib, libB.dylib et libC.dylib. Les trois dylibs ont des noms d'installation de @ loader_path/libName.dylib. Les bundles, cependant, ne peuvent pas trouver libA.dylib, libB.dylib ou libC.dylib. J'ai essayé de définir l'indicateur -bundle_loader à lier par rapport à l'exécutable principal, mais cela n'a pas aidé. Est-il possible que les bundles recherchent les dylibs à partir du dossier MacOS du package .app sans avoir à les copier dans le bundle?
Exactement. Si vous lisez la page de manuel dyld (1), cela devrait expliquer pourquoi: loader_path est le chemin vers le binaire qui contient la commande load (PlugIn1); executable_path est le chemin vers l'exécutable principal du processus (MyApp). Dans la plupart des cas, il est évident que le fichier loader_path /../../../ MacOS/libName.dylib est beaucoup plus compliqué et fragile que executable_path/libName.dylib. (Quand aucun ne semble assez simple, regardez -rpath.) (Désolé d'avoir omis les symboles at, mais je ne sais pas comment les échapper dans les commentaires ...) – abarnert