Mon application Mac OS est liée à un framework Foo.framework non fourni par le système. J'ai ajouté une référence au framework dans XCode et l'application se construit très bien. J'ai également une règle qui copie le cadre dans le dossier Frameworks de sortie (MyApp.app/Contents/Frameworks). Cependant, lors de l'exécution, le binaire recherche le framework dans ~/Library/Frameworks et l'application ne se charge pas. MyApp.app me dit aussi qu'il cherche le framework dans/Users // Library/Frameworks. Est-ce que quelqu'un peut expliquer pourquoi cela se produit, et quelle est la bonne façon de faire apparaître l'application dans le dossier Frameworks de l'ensemble d'applications? Ma solution de contournement hacky est d'inclure un script personnalisé pour modifier le chemin dans le binaire mach-o en utilisant install_name_tool, mais je suis sûr qu'il existe une façon propre de le faire.OSX: modification du chemin de .framework
Répondre
Vous êtes sur la bonne voie.
Cela se produit car sur OS X, un "install_name"
est enregistré dans la bibliothèque lors de sa création. Ce nom d'installation est ensuite copié dans toute application liée à celui-ci.
La "meilleure" façon de résoudre le problème consiste à modifier la source de l'infrastructure de sorte que l'indicateur de liaison - install_name
soit défini lors de la construction de l'infrastructure.
Cependant, ce n'est souvent pas possible, soit parce que vous n'avez pas la source, soit parce que le framework a un énorme désordre d'autoconf qui le rend presque impossible. Dans ce cas, utilisez install_name_tool avec l'indicateur -id pour modifier le install_name
enregistré dans la bibliothèque. Donc, avec tout cela dit, à quoi le changez-vous?
@executable_path /../ Cadres/Foo.framework/Foo (ou quel que soit le nom est)
Ainsi, à partir du répertoire contenant Foo.framework:
install_name_tool -id @executable_path/../Frameworks/Foo.framework/Foo Foo.framework/Foo
Lors de l'exécution, le chargeur va résoudre @executable_path vers le chemin d'accès à l'exécutable de l'application. De toute évidence, vous devez également configurer une phase de génération Copier les fichiers pour copier l'infrastructure dans le dossier Framework de l'ensemble d'applications.
Vous pouvez également utiliser install_name_tool
avec l'option -change pour changer le nom d'installation d'une bibliothèque après qu'elle a déjà été liée à l'application, mais c'est évidemment sous-optimal. Corrigez-le avant de créer un lien.
- 1. Écrasement accidentel du framework système OSX Python
- 2. Obtention du chemin du répertoire .NET Framework
- 3. Modification du chemin d'accès à l'aide du script php
- 4. Modification du chemin de sortie du projet de test d'unité dans Visual Studio 2008
- 5. Entity Framework: Modification des valeurs d'une table
- 6. problèmes de chemin de fichier avec Zend Framework et fread()
- 7. Modification du niveau de zoom du navigateur
- 8. Modification du nom de viewstate
- 9. Internes du framework jQuery
- 10. Silverlight sur OSX, cela signifie-t-il que Microsoft a porté une grande quantité de .NET Framework sur OSX?
- 11. modification du fichier plist
- 12. Modification du fichier elf
- 13. OSX équivalent de ShellExecute?
- 14. Modification d'une relation/clé étrangère dans Entity Framework - non persistante
- 15. Modification du fichier avant la validation Subversion
- 16. installation du framework Zend
- 17. Modification du type de contenu Page ENTRÉE?
- 18. Modification du nombre total de fichiers récents
- 19. Modification de la taille du champ DBF
- 20. Modification de l'emplacement du TFS Création
- 21. Modification du comportement de ComboBox modifiable
- 22. Modification du comportement de TStringStream.ReadString dans D2009?
- 23. Date de modification du fichier en Java
- 24. Modification de l'agent utilisateur du contrôle WebBrowser
- 25. Chemin absolu du répertoire de démarrage exécutable
- 26. Elément de chemin du problème Silverlight
- 27. Caractères spéciaux du chemin de cookie
- 28. Citation de Bash du chemin courant (pwd)
- 29. Affichage du chemin dans l'étiquette
- 30. Obtention de l'état des touches du modificateur Compact Framework
Ok oui, c'est exactement ce que j'ai fait. Ça semble cassé. Je voudrais image Apple pourrait ajouter quelque chose à XCode qui permet aux développeurs de définir le chemin d'exécution lors de la spécification d'un nouveau cadre à lier. – psychotik