libxml/tree.h нет такого файла или каталога

Я получаю следующие ошибки.

libxml / tree.h нет такого файла или каталога

я уже добавила libxml2.dylib к моему проекту, однако я получаю этот тип неприятностей. Пожалуйста, помогите мне.

22 ответа

Решение

Следуйте инструкциям здесь, в разделе "Настройка файла проекта".

Настройка файла вашего проекта

Вам нужно добавить libxml2.dylib в ваш проект (не помещайте его в раздел Frameworks). На Mac вы найдете его в /usr/lib/libxml2.dylib и для iPhone, вы захотите /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/libxml2.dylib версия.

Поскольку libxml2 - это.dylib (не очень дружелюбный.framework), у нас еще есть кое-что сделать. Перейдите в настройки сборки проекта (Project->Edit Project Settings->Build) и найдите "Пути поиска". В "Пути поиска заголовка" добавьте следующий путь:

$(SDKROOT)/usr/include/libxml2

Также см . Ответ ОП.

Добавление libxml2 в Xcode 4.3 / 5 / 6

Добавление libxml2 - большая, толстая, привередливая боль в заднице. Если вы собираетесь это сделать, сделайте это прежде, чем зайдете слишком далеко в построении своего проекта.


Вам нужно добавить его двумя способами:

1. Целевые настройки

Нажмите на свою цель (не ваш проект) и выберите Build Phases,

Нажмите на раскрывающийся треугольник под названием Link Binary With Libraries, Нажми на + добавить библиотеку.

Прокрутите до конца списка и выберите libxml2.dylib, Это добавляет библиотеку libxml2 в ваш проект.

2. Настройки проекта

Теперь вы должны указать своему проекту, где искать его еще три раза.

Выберите Build Settings tab,

Прокрутите вниз до Linking раздел. Под столбцами ваших проектов дважды щелкните Other Linker Flags строка. Нажмите на + и добавить -lxml2 к списку.

Еще больше.

На той же вкладке прокрутите вниз до Search Paths раздел.

Под колонкой ваших проектов в Framework Search Paths добавить строку /usr/lib/libxml2.dylib,

в Header Search Paths и User Header Search Paths добавить строку $(SDKROOT)/usr/include/libxml2,

В этих двух последних случаях убедитесь, что путь введен в Debug и Release.

3. Чистый

Под Product Выбор меню Clean,

Тогда, если бы я был вами (и давайте посмотрим правде в глаза, я, вероятно, буду), я бы вышел из Xcode и ушел. Когда ты вернешься и запустишься, у тебя все получится.

Для Xcode 6 мне пришлось сделать следующее:

1) добавить библиотеку "libxml2.dylib" в TARGET моего проекта (этапы сборки -> связать двоичные файлы с библиотеками)

2) добавьте "$(SDKROOT)/usr/include/libxml2" к путям поиска заголовка на TARGET (Настройки сборки -> Пути поиска заголовка)

После этого цель должна успешно построить.

Вы также должны добавить /usr/include/libxml2 к вашему пути включения.

У Рэя Вендерлиха есть запись в блоге об использовании gdata, которая решает эту проблему. В основном эти простые шаги:

В XCode нажмите Project\Edit Project Settings и убедитесь, что "Все конфигурации" отмечены.

Найдите параметр Search Paths\Header Search Paths и добавьте /usr/include/libxml2 в список.

Наконец, найдите раздел "Связывание \ Другие флаги компоновщика" и добавьте -lxml2 в список.

оригинальный пост: читать и писать XML-документы с gdataxml

Сформируйте ссылку @Matt Ball,

Я нашел следующие полезные для меня.

Вам нужно добавить libxml2.dylib в ваш проект (не помещайте его в раздел Frameworks). На Mac вы найдете его в /usr/lib/libxml2.dylib и для iPhone, вы захотите /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/libxml2.dylib версия.

Поскольку libxml2 - это.dylib (не очень дружелюбный.framework), у нас еще есть кое-что сделать. Зайдите в настройки сборки проекта (Project->Edit Project Settings->Build) и найдиSearch Paths". В" Пути поиска заголовка "добавьте следующий путь на Mac:

 /usr/include/libxml2 

Я нашел то же самое, мне пришлось добавить $(SDKROOT)/usr/include/libxml2 для последней версии Xcode (4.3.x). ТАКЖЕ, что заставляло меня кружить в течение нескольких часов, так это то, что я модифицировал "TARGET", а не "PROJECT" (новый пользовательский интерфейс XCode настолько сложен, что это легко упустить из виду). Вам нужно изменить проект!

Другое решение выполните все шаги в пути поиска заголовка и т. д. и убедитесь, что выбранная вами конфигурация в проекте в настройках проекта является правильной. При двойном щелчке по настройкам сборки проекта вы можете изменить настройки дистрибутива, но вы пытаетесь добавить путь поиска заголовка в настройках "Отладка". Поэтому убедитесь, что вы в правильных настройках. или выберите все настройки

Начиная с Mavericks (OS X 10.9) каталог /usr/include исчез. Половина ответов здесь устарели, так как приложение не будет компилироваться, пока вы не разберетесь с каталогом include.

Я решил проблему, создав символическую ссылку на MacOSX SDK в терминале, используя следующую команду:

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

Приложение теперь снова компилируется.

Я обнаружил, что в xCode 4.3.2 мне пришлось вводить $(SDKROOT)/usr/include/libxml2 в поле поиска заголовка, а не просто / usr / include / libxml2

На Mountain Lion я столкнулся с той же проблемой, которая была решена путем добавления /usr/include/libxml2 чтобы включить пути с флагом "рекурсивный", используйте это, если все вышеперечисленное бесполезно.

Я не уверен, в чем разница, но добавляю включаемый путь к проекту, а также к цели.

Я нашел этот визуальный урок полезным.

Пожалуйста, выполните следующие шаги

  1. Добавление libxml2
    libxml2.dylib можно найти на вашем компьютере Mac по адресу /usr/lib/libxml2.dylib

  2. Изменить "Пути поиска в заголовке"
    Нажмите на [Имя проекта] (на левой панели) -> Проект -> Настройки сборки -> Выбрать все (по умолчанию - Основные)
    Введите пути поиска заголовка в поле поиска
    Дважды щелкните по Пути поиска в заголовке -> + -> "$(SDKROOT)/usr/include/libxml2"

  3. Добавьте -lxml2 к "Другой флаг компоновщика"
    Выполните поиск "Другие флаги компоновщика" в качестве шага 2.
    щелкните по строке "Другие флаги компоновщика". Нажмите "+" и добавьте "-lxml2" в список.

  4. Измените тип вашего проекта на ARC -> Нет, т.е. автоматический подсчет ссылок на Нет. Вы можете искать ARC согласно шагу 2

Xcode 4.5 Я полностью использовал решение CW. Единственным исключением является то, что $(SDKROOT)/usr/include/libxml2 не работает для меня, и мне пришлось добавить "$(SDK_DIR)"/usr/include/libxml2 в мои пути поиска заголовков проектов и пути поиска заголовков пользователей, После этого проект строится успешно.

РЕДАКТИРОВАТЬ: у меня есть проект Google GData внутри моего проекта (называется MyProject) (мой проект использует). GData требует libxml. Чтобы успешно построить проект MyProject, я добавляю "$(SDK_DIR)"/usr/include/libxml2 к путям поиска по заголовкам MyProject, а не к путям поиска по заголовкам GData. Если я не добавил его в MyProject, проект не был создан).

У меня была эта проблема, когда я снова открыл проект (который был разработан на XCode 3. что-то на Leopard) после обновления до Snow Leopard и XCode 3.2. Любопытно, что это повлияло только на некоторые виды сборок (сборки на эмуляторе прошли нормально, на устройствах были ошибки). И у меня есть libxml2 в /usr/include, и он действительно содержит libxml/tree.h.

Даже магия "Очистить" не сработала, но "Очистить кеши..." в меню "XCode" (между логотипом Apple и "Файлом") помогли (это было в предыдущих версиях?). Бьет меня причина, но после очистки больше не было жалоб на libxml / tree.h

Также выберите "Всегда искать пути пользователя" к YES. В XCode 4.3.3 его по умолчанию НЕТ

Не помещайте libxml2.dylib в папку frameworks, поместите ее под root чуть ниже корня (верхний левый синий значок)

Затем нажмите на проект (верхний левый синий значок), перейдите к настройкам сборки, в поле поиска введите "Пути поиска в заголовке" и добавьте этот "$(SDKROOT)/usr/include/libxml2"

Этот код решает мою проблему, надеюсь, это поможет вам исправить это

@Aqib Mumtaz - я начал работать, следуя инструкциям в примечании Парриса выше, озаглавленном "Добавление libxml2 в Xcode 4.3 / 5 / 6". Этап использования Framework Search Path не работает, и компилятор жалуется. В любом случае, большое спасибо этому парню!

Я использую Xcode 6.2b3

Независимо от версии Xcode, которую вы используете, он глючит. Не всегда предполагайте, что ошибки компиляции реальны. Есть много раз, когда он не следует пути поиска заголовка и включает четко перечисленные не найдены. Хуже того, возникающие ошибки, как правило, указывают на вас в разных направлениях, поэтому вы тратите много времени на то, чтобы отвлекаться. С этим сказал...

Рекомендую шаги ребенка, начиная с этого точно...:

  1. создать одно окно Mac OS X проект Какао под названием "Bench Test"
  2. добавьте XpathQuery в исходный каталог вашего проекта прямо в Finder
  3. нажмите на крошечный значок папки под красной кнопкой закрытия окна проекта
  4. перетащите XpathQuery (папку, если вы ее содержали) в ресурсы проекта слева от экрана окна проекта
  5. Перетащите /Applications/Xcode/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/lib/libxml2.2.dylib в ресурсы вашего проекта внизу. Это добавит его в ваши "Фазы сборки" -> "Связать двоичные файлы с библиотеками" простым способом
  6. нажмите на значок проекта "Bench Test" в верхней части левого столбца активов проекта.
  7. найдите "Другие флаги компоновщика" в разделе "Настройки сборки"
  8. добавьте "-lxml2" (sans "") к "Другие флаги компоновщика" в столбце значка проекта "Bench Test"
  9. поиск "поиск заголовка" в разделе "Настройки сборки"
  10. добавьте "$(SDKROOT)/usr/include/libxml2" (sans "") в "Пути поиска заголовка" в столбце значка проекта "Bench Test"
  11. добавьте "$(SDKROOT)/usr/include/libxml2" (sans "") в "Пути поиска по заголовкам пользователей" в столбце значка проекта "Bench Test"

Заметки:

  • Мой не будет работать, пока я не добавлю этот путь поиска в "Пути поиска заголовка" и "Пути поиска заголовка пользователя".
  • Чтобы перейти к libxml2.2.dylib в поисковике, вам нужно будет щелкнуть правой кнопкой мыши по значку Xcode и выбрать "Показать контакты пакета" (редакция: что за хак... втиснуть весь этот мусор в приложение)
  • Будьте готовы изменить связанный libxml2.2.dylib. Тот, что внутри XCode, намеренно используется, чтобы гарантировать, что XCode получит то, о чем он знает, и теоретически был протестирован. Вы можете использовать dylib в системе позже (читайте в этой теме)
  • Поскольку я использую Xcode 6.2b3, у меня может быть более новая библиотека libxml2.2.dylib. Ваш можно назвать немного по-другому. Просто найдите в папке что-то, что начинается с "libxml" и заканчивается ".dylib", и это должно быть так. Также может быть псевдоним, такой как "libxml2.dylib". Не используйте это сразу, поскольку разрешение псевдонима добавляет еще одну переменную в уравнение "что может иметь ошибки" в Xcode.
  • Для здравого смысла я делаю псевдонимы внешних библиотек, переименовываю их, чтобы указать, какие они есть, и сохраняю их на том же уровне, что и файл проекта в Finder. Если они меняют местоположение, меняют имя и т. Д., Псевдоним будет иметь в его "Get Info" полный путь к исходному файлу для дальнейшей детективной работы, чтобы заново скомпилировать и связать проект. (символические ссылки ломаются слишком легко и не являются естественными для Mac)
  • Последнее, и очень важное, см. http://www.cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html где вы можете скачать XpathQuery и получить еще больше удовольствия.

надеюсь это поможет.

Если вам случается разрабатывать что-то для ветеранов, скажем, приложение для iPhone / iPad или Mac, и вы работаете против чего-то, называемого "MDWS" или "VIA", которые являются SOAP-интерфейсами к системе медицинских карт... пожалуйста, свяжитесь со мной

Цитата Добавление libxml2 в Xcode 4.3.x

Добавление libxml2 - большая, толстая, привередливая боль в заднице. Если вы собираетесь это сделать, сделайте это до того, как зайдете слишком далеко в построении своего проекта.

Вот как.

Настройки цели

Нажмите на свою цель (не ваш проект) и выберите "Фазы сборки". Нажмите на раскрывающийся треугольник под названием "Link Binary With Libraries". Нажмите на "+", чтобы добавить библиотеку. Прокрутите список до конца и выберите "libxml2.dylib". Это добавляет библиотеку libxml2 2 в ваш проект... но подождите.

Настройки проекта

Теперь вы должны указать своему проекту, где искать его еще три раза.

Выберите вкладку "Настройки сборки". Прокрутите вниз до раздела "Связывание". Под столбцами вашего проекта дважды щелкните по строке "Другие флаги компоновщика". Нажмите "+" и добавьте "-lxml2" в список.

Еще больше.

На той же вкладке прокрутите вниз до раздела "Пути поиска". Под столбцом вашего проекта в строке "Framework Search Paths" добавьте "/usr/lib/libxml2.dylib".

В строке "Пути поиска по заголовку" И в строке "Пути поиска по заголовку пользователя" добавьте "$(SDKROOT)/usr/include/libxml2". В этих двух последних случаях убедитесь, что путь введен в Debug AND Release.

Затем. В меню "Продукт" выберите "Очистить".

Это работает и для Xcode5 тоже! Спасибо!

Я решил в три этапа в Xcode 8.0 + Unit Test Project

1) Я добавил файл libxml в Фазы сборки. Перейдите по этой ссылке

2) Я добавил другие флаги линкера как -ObjC (Как для целей проекта, так и для целей тестового проекта)

3) Я устанавливаю Путь поиска заголовка как "${SDKROOT}/usr/include/libxml2" (Не забудьте двойные кавычки с обеих сторон) (Как для целей проекта, так и для целей тестового проекта)

Один из них решит проблему. Если нет, вы должны применить все три вышеперечисленных.

Я подумал, что я добавил неправильно, тогда я понимаю, что проблема в том, что она не поддерживает дугу, поэтому проверьте поддержку здесь, спасатель -> http://www.michaelbabiy.com/arc-compliant-gdataxml-library/

Другие вопросы по тегам