libxml / tree.h aucun fichier ou répertoire de ce type


100

Je reçois les erreurs suivantes.

libxml / tree.h aucun fichier ou répertoire de ce type

J'ai déjà ajouté libxml2.dylibà mon projet, mais je reçois ce type de problème. Aidez-moi, s'il vous plaît.


2
Quand vous dites que vous l'avez déjà ajouté à votre projet, qu'avez-vous fait exactement? Je ne pense pas que XCode pense que cela a fonctionné.
Devin Ceartas

1
si vous rencontrez ce problème dans XCode 4.6, allez ici stackoverflow.com/questions/14622684/...
Boris Gafurov

Mettez à jour votre capture d'écran.
Utilisateur

Réponses:


213

Suivez les instructions ici , sous «Configuration de votre fichier de projet».

Configuration de votre fichier projet

Vous devez ajouter libxml2.dylib à votre projet (ne le mettez pas dans la section Frameworks). Sur Mac, vous le trouverez sur /usr/lib/libxml2.dylibet pour l'iPhone, vous voudrez la /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib version.

Puisque libxml2 est un .dylib (pas un .framework sympathique), nous avons encore une chose à faire. Accédez aux paramètres de construction du projet (Projet-> Modifier les paramètres du projet-> Construire) et recherchez les "Chemins de recherche". Dans "Chemins de recherche d'en-tête", ajoutez le chemin suivant:

$(SDKROOT)/usr/include/libxml2

Voir également la réponse du PO .


12
Ne faites pas ce que cela dit quand il vous demande d'ajouter "/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/include/libxml2" au chemin de recherche d'en-tête. Ajoutez plutôt "/ usr / include / libxml2. Cela rend votre projet indépendant des SDK spécifiques.
cdespinosa

Cela fonctionne tant qu'il existe un lien symbolique vers celui-ci /usr/include. Je n'ai pas essayé d'installer libxml2 donc je ne peux pas confirmer le comportement par défaut. Mais oui, c'est bien mieux de le lier de cette façon.
Matt Ball

1
Lors du développement sous XCode, GCC utilise l'option -isysroot qui déplace la racine du SDK. Si vous ajoutez / usr / include / libxml2 dans les chemins de recherche d'en-tête, il sera traduit au moment de la compilation dans le dossier usr / include / libxml2 À L'INTÉRIEUR du SDK actuel.
Laurent Etiemble

Lorsque je place ce "$ (SDKROOT) / usr / include / libxml2" sur le chemin de recherche d'en-tête (XCode 4.2), cela indique que "" _OBJC_METACLASS _ $ _ UIResponder ", référencé à partir de: _OBJC_METACLASS _ $ _ D2GAppDelegate dans MyDemoAppDelegate: symbol. (s) introuvable pour l'architecture i386 ". Que puis-je faire?
NicTesla

1
Génial. Merci. il manquait «$ (SDKROOT)», ce qui a créé des problèmes.

86

Ajout de libxml2 dans Xcode 4.3 / 5/6

L'ajout de libxml2 est une grosse, grosse douleur capricieuse dans le cul. Si vous comptez le faire, faites-le avant d'aller trop loin dans la construction de votre projet.


Vous devez l'ajouter de deux manières :

1. Paramètres cibles

Cliquez sur votre cible (pas sur votre projet) et sélectionnez Build Phases.

Cliquez sur le triangle de révélation intitulé Link Binary With Libraries. Cliquez sur +pour ajouter une bibliothèque.

Faites défiler vers le bas de la liste et sélectionnez libxml2.dylib. Cela ajoute la bibliothèque libxml2 à votre projet.

2. Paramètres du projet

Vous devez maintenant indiquer à votre projet où le rechercher trois fois de plus.

Sélectionnez le Build Settings tab.

Faites défiler jusqu'à la Linkingsection. Sous les colonnes de vos projets, double-cliquez sur la Other Linker Flagsligne. Cliquez sur +et ajoutez -lxml2à la liste.

Toujours plus.

Dans le même onglet, faites défiler jusqu'à la Search Pathssection.

Sous la colonne de vos projets dans la Framework Search Pathsligne, ajoutez /usr/lib/libxml2.dylib.

Dans le Header Search Paths et la User Header Search Pathsligne ajouter $(SDKROOT)/usr/include/libxml2.

Dans ces deux derniers cas, assurez-vous que le chemin est entré dans Debug and Release.

3. Nettoyer

Dans le Productmenu, sélectionnez Clean.

Ensuite, si j'étais vous (et admettons-le, je le suis probablement), je quitterais Xcode et m'en irais. Lorsque vous revenez et lancez, vous devriez être prêt à partir.


Merci, c'est la seule solution qui a fonctionné pour moi avec Xcode 4.3.3
lifjoy

1
Ces instructions étape par étape ont été les seules qui ont fonctionné pour moi (Xcode 4.4.1). Merci!
Frank le

A travaillé pour moi sans définir les chemins de recherche du framework dans Xcode 4.1.1
Richard Garside

1
opening import file 'Swift.swift': Not a directoryaprès avoir fait cela dans Xcode 5.
Utilisateur

1
J'ai également eu l'erreur "Ouverture du fichier d'importation pour le module 'Swift': Pas un répertoire". Pour résoudre ce problème, n'ajoutez simplement pas "/usr/lib/libxml2.dylib" aux "Chemins de recherche du framework". J'ai toujours travaillé pour moi après avoir ignoré cette étape.
Daniel Ryan

22

Pour Xcode 6, je devais faire ce qui suit:

1) ajouter la bibliothèque "libxml2.dylib" à TARGET de mon projet (Build Phases -> Link Binary With Libraries)

2) ajoutez "$ (SDKROOT) / usr / include / libxml2" aux chemins de recherche d'en-tête sur la CIBLE (Paramètres de construction -> Chemins de recherche d'en-tête)

Après cela, la cible devrait se construire avec succès.


Une raison pour laquelle / usr / include / libxml2 sur les paramètres du projet NE fonctionne PAS?
Paul Brewczynski


11

Former le lien de @Matt Ball,

J'ai trouvé le suivi utile pour moi.

Vous devez ajouter libxml2.dylib à votre projet (ne le mettez pas dans la section Frameworks). Sur le Mac, vous le trouverez sur /usr/lib/libxml2.dylibet pour l'iPhone, vous voudrez le/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib version.

Puisque libxml2 est un .dylib (pas un .framework sympathique), nous avons encore une chose à faire. Accédez aux paramètres de construction du projet ( Project->Edit Project Settings->Build) et recherchez le " Search Paths". Dans "Chemins de recherche d'en-tête", ajoutez le chemin suivant sur le Mac:

 /usr/include/libxml2 

11

Ray Wenderlich a publié un article de blog sur l'utilisation de gdata qui résout ce problème. Fondamentalement, ces étapes simples:

Dans XCode, cliquez sur Projet \ Modifier les paramètres du projet et assurez-vous que «Toutes les configurations» sont cochées.

Recherchez le paramètre Search Paths \ Header Search Paths et ajoutez / usr / include / libxml2 à la liste.

Enfin, recherchez la section Linking \ Other Linker Flags et ajoutez -lxml2 à la liste.

article original: lire et écrire des documents xml avec gdataxml


2
J'ai trouvé cette réponse dans de nombreux endroits, mais tous ont oublié de mentionner qu'il s'agit du chemin de recherche d'en-tête sur le projet, pas sur la cible. Merci beaucoup de l'expliquer correctement.
esbenr

7

J'ai trouvé la même chose, j'ai dû ajouter $ (SDKROOT) / usr / include / libxml2 pour le dernier Xcode (4.3.x). AUSSI, ce qui m'a fait tourner autour pendant des heures, c'est le fait que je modifiais la "CIBLE" et non le "PROJET" (la nouvelle interface utilisateur de Xcode est si complexe qu'il est facile de l'oublier). Vous devez modifier le PROJET!


5

Une autre solution. effectuez toutes les étapes du chemin de recherche d'en-tête, etc. et assurez-vous que la configuration sélectionnée dans le projet dans les paramètres du projet est la bonne. Lorsque vous double-cliquez sur les paramètres de génération du projet, vous modifiez peut-être les paramètres de distribution, mais vous essayez d'ajouter un chemin de recherche d'en-tête dans les paramètres de «débogage». Assurez-vous donc que vous êtes dans les bons paramètres. ou choisissez tous les paramètres


4

J'ai trouvé qu'avec xCode 4.3.2, je devais entrer $ (SDKROOT) / usr / include / libxml2 dans le champ de recherche d'en-tête plutôt que simplement / usr / include / libxml2


4

Depuis Mavericks (OS X 10.9), le répertoire / usr / include a disparu . La moitié des réponses ici sont obsolètes, car l'application ne se compilera pas tant que vous n'aurez pas trié le répertoire d'inclusion.

J'ai résolu le problème en créant un lien symbolique vers le SDK MacOSX dans le terminal, en utilisant la commande suivante:

sudo ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include /usr/include

L'application se compile à nouveau.


Exactement ce que je cherchais. Cela fonctionne parfaitement. Assurez-vous simplement que dans vos chemins de recherche d'en-tête, vous mettez / usr / include / libxml2
Josh Bernfeld

3

Je ne sais pas quelle est la différence, mais ajoutez le chemin d'inclusion au projet ainsi qu'à la cible.


3

Sur Mountain Lion, j'étais confronté au même problème, qui a été résolu en ajoutant /usr/include/libxml2pour inclure des chemins avec le drapeau "récursif", utilisez ceci si tout ce qui précède n'est pas fructueux.


2

J'ai eu ce problème lorsque j'ai rouvert un projet (qui a été développé sur XCode 3. quelque chose sur Leopard) après la mise à niveau vers Snow Leopard et XCode 3.2. Curieusement, cela n'a affecté que certains types de builds (les builds d'émulateur se sont bien déroulés, ceux des appareils m'ont donné l'erreur). Et j'ai libxml2 dans / usr / include, et il contient en effet libxml / tree.h.

Même la magie "Clean" n'a pas fonctionné, mais "Vider les caches ..." sous le menu "XCode" (entre le logo Apple et Fichier) a fait l'affaire (ce menu était-il là dans les versions précédentes?). Ça me bat la raison, mais après un nettoyage, il n'y avait plus de plaintes concernant libxml / tree.h


2

Sélectionnez également «Toujours rechercher les chemins utilisateur» sur OUI. Dans XCode 4.3.3 c'est par défaut NON


2

Veuillez suivre les étapes suivantes

  1. L'ajout de libxml2
    libxml2.dylib peut être trouvé sur votre machine Mac à /usr/lib/libxml2.dylib

  2. Modifier les "Chemins de recherche des en-têtes"
    Cliquez sur [Nom du projet] (dans le panneau de gauche) -> Projet -> Paramètres de construction -> Tout sélectionner (par défaut: Basic)
    Tapez les chemins de recherche des en-têtes dans la zone de recherche
    Double-cliquez sur Chemins de recherche des en-têtes -> + - > "$ (SDKROOT) / usr / include / libxml2"

  3. Ajoutez -lxml2 à "Autre indicateur de l'éditeur de liens"
    Recherchez "Autres indicateurs de l'éditeur de liens " en tant que recherche à l'étape 2,
    cliquez sur la ligne "Autres indicateurs de l'éditeur de liens ". Cliquez sur le "+" et ajoutez "-lxml2" à la liste.

  4. Changez votre type de projet en ARC -> Non ie comptage de référence automatique sur Non Vous pouvez rechercher ARC comme à l'étape 2


2

Xcode 4.5 J'ai entièrement utilisé la solution de The CW. La seule exception est que $ (SDKROOT) / usr / include / libxml2 n'a pas fonctionné pour moi, et j'ai dû ajouter "$ (SDK_DIR)" / usr / include / libxml2 à mes chemins de recherche d'en-tête de projets et de chemins de recherche d'en-tête d'utilisateur . Après que le projet se soit construit avec succès.

EDIT: J'ai un projet Google GData dans mon projet (appelé MyProject) (mon projet utilise). GData nécessite libxml. Pour construire le projet MyProject avec succès, j'ajoute "$ (SDK_DIR)" / usr / include / libxml2 aux chemins de recherche d'en-tête de MyProject et non aux chemins de recherche d'en-tête de GData . Si je ne l'ai pas ajouté à MyProject, le projet ne s'est pas construit ).



1

Blockquote Ajout de libxml2 dans Xcode 4.3.x

L'ajout de libxml2 est une grosse, grosse douleur capricieuse dans le cul. Si vous allez le faire, faites-le avant d'aller trop loin dans la construction de votre projet.

Voici comment.

Paramètres cibles

Cliquez sur votre cible (pas sur votre projet) et sélectionnez "Build Phases". Cliquez sur le triangle de révélation intitulé "Link Binary With Libraries". Cliquez sur le "+" pour ajouter une bibliothèque. Faites défiler vers le bas de la liste et sélectionnez "libxml2.dylib". Cela ajoute la bibliothèque libxml2 2 à votre projet… mais attendez.

Paramètres du projet

Vous devez maintenant indiquer à votre projet où le rechercher trois fois de plus.

Sélectionnez l'onglet "Paramètres de construction". Faites défiler jusqu'à la section "Liens". Sous les colonnes de votre projet, double-cliquez sur la ligne "Autres indicateurs de liens". Cliquez sur le "+" et ajoutez "-lxml2" à la liste.

Toujours plus.

Dans le même onglet, faites défiler jusqu'à la section "Chemins de recherche". Sous la colonne de votre projet dans la ligne "Chemins de recherche du framework", ajoutez "/usr/lib/libxml2.dylib".

Dans la ligne «Chemins de recherche d'en-tête» ET «Chemins de recherche d'en-tête d'utilisateur», ajoutez «$ (SDKROOT) / usr / include / libxml2». Dans ces deux derniers cas, assurez-vous que le chemin est entré dans Debug AND Release.

Ensuite. Dans le menu «Produit», sélectionnez «Nettoyer».

Cela fonctionne et pour Xcode5 aussi! Je vous remercie!


1
Cela ne fonctionne pas dans Xcode 5.0.2. J'ai apporté les modifications ci-dessus à mon projet, mais pas de chance. Pouvez-vous m'aider ce qui doit être fait.
Ganesh le

1

Ne mettez pas libxml2.dylib dans le dossier frameworks, placez-le sous la racine juste en dessous de la racine (icône bleue en haut à gauche)

Cliquez ensuite sur le projet (icône bleue en haut à gauche), allez dans les paramètres de construction, dans le champ de recherche tapez "Header Search Paths", puis ajoutez le "$ (SDKROOT) / usr / include / libxml2"

Ce code résout mon problème, j'espère qu'il vous aidera à résoudre ce problème


1

@Aqib Mumtaz - Je l'ai fait fonctionner en suivant les instructions de la note de Parris ci-dessus intitulée "Ajout de libxml2 dans Xcode 4.3 / 5/6". L'étape d'utilisation d'un chemin de recherche de framework ne fonctionne pas et le compilateur se plaint. Bravo à ce gars quand même!

J'utilise Xcode 6.2b3

Quelle que soit la version de Xcode que vous utilisez, elle est boguée. Ne supposez pas toujours que les erreurs de compilation sont réelles. Il arrive souvent qu'il ne suive pas les chemins de recherche d'en-tête et que les inclusions clairement répertoriées ne soient pas trouvées. Pire encore, les erreurs qui en résultent ont tendance à vous orienter dans des directions différentes, vous perdez donc beaucoup de temps à vous distraire. Cela étant dit...

Recommandez des étapes de bébé en commençant par ceci exactement ...:

  1. créer un projet Mac OS X Cocoa à fenêtre unique appelé "Bench Test"
  2. ajoutez XpathQuery dans le répertoire source de votre projet directement dans le Finder
  3. cliquez sur l'icône de dossier minuscule sous le bouton rouge de fermeture de la fenêtre du projet
  4. faites glisser XpathQuery (dossier si vous l'avez contenu) dans les ressources du projet à gauche de l'affichage de la fenêtre du projet
  5. faites glisser /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib dans les ressources de votre projet, en bas. Cela l'ajoutera dans vos "Phases de construction" -> "Lier le binaire avec les bibliothèques" en toute simplicité
  6. cliquez sur l'icône du projet "Bench Test" dans la colonne des actifs du projet, en haut à gauche
  7. recherchez "Autres indicateurs de l'éditeur de liens" sous "Paramètres de création"
  8. ajoutez "-lxml2" (sans "") à "Other Linker Flags" sous la colonne d'icônes du projet "Bench Test"
  9. recherchez "recherche d'en-tête" sous "Paramètres de construction"
  10. ajoutez "$ (SDKROOT) / usr / include / libxml2" (sans "") à "Header Search Paths" sous la colonne "Bench Test" icône du projet
  11. ajoutez "$ (SDKROOT) / usr / include / libxml2" (sans "") à "User Header Search Paths" sous la colonne "Bench Test" icône du projet

Remarques:

  • Le mien ne fonctionnerait pas jusqu'à ce que j'ajoute ce chemin de recherche à la fois aux "chemins de recherche d'en-tête" et aux "chemins de recherche d'en-tête d'utilisateur".
  • Pour accéder à la libxml2.2.dylib dans le Finder, vous devrez faire un clic droit sur votre icône Xcode et sélectionner "Afficher les contacts du package" (éditorial: quel hack .. entasser toutes ces ordures dans l'application)
  • Soyez prêt à changer le libxml2.2.dylib lié. Celui à l' intérieur de Xcode est intentionnellement utilisé pour s'assurer que Xcode obtient quelque chose qu'il sait et en théorie a été testé. Vous voudrez peut-être utiliser le dylib dans le système plus tard (lisez-le dans ce fil)
  • Comme j'utilise Xcode 6.2b3, il se peut que j'aie une version plus récente de libxml2.2.dylib. Le vôtre pourrait être nommé légèrement différent. Recherchez simplement dans le dossier quelque chose qui commence par "libxml" et se termine par ".dylib" et cela devrait être tout. Il peut également y avoir un alias comme "libxml2.dylib". N'utilisez pas cela tout de suite car la résolution d'un alias ajoute une autre variable dans l'équation Xcode "ce qui pourrait avoir des bogues".
  • Pour des raisons de santé mentale, je crée des alias des bibliothèques externes, je les renomme pour indiquer laquelle elles sont et je les garde au même niveau que le fichier de projet dans le Finder. S'ils changent d'emplacement, de nom, etc., l'alias aura dans Get Info, le chemin complet du fichier d'origine pour un travail de détective ultérieur pour obtenir la compilation et la liaison du projet à nouveau. (les liens symboliques se cassent trop facilement et ne sont pas naturels pour le Mac)
  • Dernière chose, et très importante, voir http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html où vous pouvez télécharger XpathQuery et obtenir plus de bonté.

J'espère que cela t'aides.

Si vous développez quelque chose pour les vétérans, disons une application iPhone / iPad ou Mac, et que vous travaillez contre quelque chose appelé "MDWS" ou "VIA" qui sont des interfaces SOAP avec le système de dossier médical ... veuillez me contacter


0

J'ai résolu en trois étapes dans Xcode 8.0 + Unit Test Project

1) J'ai ajouté le fichier libxml aux phases de construction. Suivez ce lien

2) J'ai ajouté d' autres indicateurs de liens comme -ObjC(pour les objectifs de projet et de projet de test)

3) J'ai configuré le chemin de recherche de l'en-tête comme "${SDKROOT}/usr/include/libxml2"(N'oubliez pas les guillemets doubles de chaque côté) (Pour les cibles de projet et de projet de test)

L'un d'eux résoudra le problème. Sinon, vous devez appliquer les trois ci-dessus.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.