2011-03-30 8 views
2

J'ai créé une bibliothèque statique qui contient en interne une autre bibliothèque statique (X) dans le dossier "Lier les bibliothèques binaires". Mais lorsque j'exporte ma bibliothèque vers un exemple de projet et essaie de la compiler, elle ne trouve pas le chemin de la bibliothèque X. J'ajoute "." dans le paramètre de construction "Library search path" lors de la construction de ma bibliothèque statique.Compilation de la bibliothèque statique dans une bibliothèque statique - édition

Qu'est-ce qui me manque ici?

Répondre

2

Si j'ai bien compris votre problème, il s'agit moins d'un problème de lien de recherche, mais plutôt d'un problème conceptuel.

Je vois deux options pour résoudre le problème:

La solution commune et directe;

  • ajouter les deux projets de bibliothèque statique dans le projet de votre application
  • étendre les projets inclus
  • élargir les objectifs de votre application projet
  • développer le lien « binaire avec les bibliothèques » -Entrée
  • faites glisser les fichiers du produit de vos projets de bibliothèque (bibliothèques réelles) vers le bas dans ce "lien binaire avec les bibliothèques" -Entry
  • inclure le chemin d'en-tête à vos deux projets de bibliothèque au sein de votre USER_HEADER_SEARCH_PATHS paramètres de construction

La prochaine approche est plutôt non conventionnelle et dans la plupart des cas ne vaut pas le coup de pouce supplémentaire. Voici quelques explications avant d'entrer dans les détails.

Le concept d'une bibliothèque statique est essentiellement un groupe de fichiers objets bourrés dans un seul fichier (archive). Lier une bibliothèque statique à une autre bibliothèque statique est plutôt rare - eh bien, pour l'épeler correctement, impossible.

... mais là encore, rien est impossible en matière de codage;) ...

La solution d'emballage bibliothèque;

  • utilisation ar pour extraire tous les fichiers d'objets de toutes les bibliothèques que vous voulez combiner
  • utilisation ar de combiner tous les fichiers objets dans un grand, la nouvelle bibliothèque
+0

La première option me semble bon et en fait, j'essayé d'aller de cette façon, mais en face il y a des problèmes. Voici comment je le fais: Création de ma propre bibliothèque statique et fichier d'en-tête et les mettre dans le dossier Frameworks dans Xcode du projet où je veux l'utiliser. Avec ma bibliothèque statique, j'ai également mis d'autres bibliothèques statiques directement dans Frameworks. C'étaient les libs que je voulais mettre dans ma bibliothèque statique.Enfin, dans les paramètres de construction de ce projet, je définis le "Chemin de recherche d'en-tête" sur le chemin de ces bibliothèques. – Abhinav

+0

Après avoir fait ce que j'ai décrit comme "La solution commune et directe", quel est le message d'erreur de l'éditeur de liens? – Till

+0

Lors de la compilation Je reçois cette erreur: Undefined symbols pour ARMv6 architecture: "_OBJC_CLASS _ $ _ MyLib", fait référence à partir de: objc classe-ref dans TestAppDelegate.o ld: symbole (s) non trouvé pour l'architecture ARMv6 collect2: ld a renvoyé 1 statut de sortie – Abhinav

2

ALong avec la mise en place en-tête Chemin de recherche, Essayez également de configurer le drapeau Autres lieurs ..

Accédez à «Autres indicateurs de lieur» dans la section «Outil de liaison» et ajoutez «-ObjC» et «-all_load» à la liste des drapeaux

Espoir qui fonctionne pour vous,

+0

Les deux indicateurs mentionnés ne sont utiles que si la ou les bibliothèques contiennent des catégories sur d'autres classes implémentées. En fait, puisque clang 3 seulement -ObjC est nécessaire. – Till

Questions connexes