2009-11-22 6 views
4

J'ai deux projets XCode: un framework et une application cliente. Mon application dépend de mon framework et tout fonctionne bien avec ça - le framework est recompilé à chaque fois que l'application est, les chemins de compilation des projets sont réglés correctement, c'est tout à fait correct.Copie de la bibliothèque dynamique (.dylib) dans un framework (.framework)

Maintenant, l'infrastructure a commencé à utiliser un fichier dylib tiers et elle est liée au dylib. J'ai même ajouté une phase de construction pour copier cette bibliothèque dans le répertoire des ressources du framework.

Quand je suis en train d'exécuter l'application, tout compile correctement, je reçois ceci:

dyld: Bibliothèque non chargée: /usr/local/lib/libplplot.9.dylib de Referenced :/utilisateurs/railsmaniac/Projets/Etude/Calcul des> approximations/builds/Debug/XNMaths.framework/versions/A/XNMaths Raison: image not found

Comment puis-je résoudre ce problème? L'ajout de la bibliothèque aux ressources de l'application client ne résout pas le problème. Je peux simplement placer la bibliothèque dans l'emplacement requis, mais je préfère le garder dans le cadre. Est-ce possible?

+0

Il semble que je manque de binaires pour cette bibliothèque: j'ai téléchargé un .dylib binaire avec des en-têtes compressés dans un zip et référencés dans le blog d'un développeur. Maintenant, il nécessite * libplplot.9 * pas libplplot, non? Si je le copie dans/usr/local/lib /, il nécessite un autre fichier dylib, qui est compilé avec le paquet PLPlot, comme je peux le voir. Je pense que je vais juste faire un cadre à partir de sources PLPLot, il sera plus utile et le cadre peut être facilement empaqueté dans un autre framewowk :) – Nat

Répondre

3

Il semblerait que votre application attende que la bibliothèque se trouve sur un chemin spécifique du système. Si vous utilisez OS 10.5+, vous pouvez utiliser la nouvelle fonctionnalité @rpath pour permettre à votre application de créer un lien dynamique avec votre bibliothèque.

Voir this post pour plus de détails. Il montre également la "vieille" façon de le faire.

+0

Merci pour la réponse. Je suis un peu nouveau pour la liaison dynamique, etc, puisque je suis un développeur web nativement :) Mais je comprends clairement le concept. Une question maintenant: est-ce le problème du projet d'application, ou les cadres? Je voudrais corriger cela une fois dans le framweork pour toutes les applications qui l'utilisent. Est-ce possible? – Nat

+0

Cela devrait être possible oui. Je ne l'ai pas fait depuis longtemps (je n'ai pas développé de frameworks OS X natifs depuis quelques années maintenant) donc je ne peux pas vous donner beaucoup plus de pointeurs que de jouer avec ce qui est dans cet article (ça marchera, Je l'ai fait il y a des années). Oh et acceptez si vous êtes heureux avec les pointeurs;) – jkp

+0

J'ai posté une mise à jour de ma situation. Oui, votre réponse a été utile, merci encore. – Nat

Questions connexes