Назад Совместимость С libxml2 и iPhone SDK
Q: Почему делает мой сбой приложения с «Несовместимым сообщением об ошибке» версии библиотеки?
A: Почему делает мой сбой приложения с «Несовместимым сообщением об ошибке» версии библиотеки?
Если отвечают следующим условиям:
Ваши ссылки на приложение непосредственно на libxml2, и
создается с помощью iPhone SDK 3.0 или позже, и
имеет iPhone OS 2.x как цель развертывания
тогда приложение откажет, когда работается 2.x устройства. Это вследствие изменения версии совместимости в libxml2 между iPhone OS 2.2.1 и iPhone OS 3.0 и позже. Можно работать вокруг этой проблемы путем соединения непосредственно с более старой версией libxml2.
Фиксация версии совместимости
Можно соединиться непосредственно с библиотекой путем изменения «Другой записи» Флагов Компоновщика для проекта XCode. Для этого откройте настройки и поиск Build проекта «Других Флагов Компоновщика». Тогда найдите полный путь к libxml2 в надлежащем 2.x SDK и добавьте это к флагам. Например, если Вам установили 2.2.1 SDK, можно использовать следующее:
$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/usr/lib/libxml2.dylib.
XCode заменит $(DEVELOPER_DIR) переменная с каталогом, где Ваши инструменты разработчика установлены, который делает это более переносимое в случае, если проект позже открыт на машине с инструментами, установленными в каталоге не по умолчанию.


Создание его работать над Средством моделирования
Установка, описанная выше, решит проблему при создавании приложения для Устройства, но потому что путь к библиотеке полностью указан, XCode не может переключиться на надлежащую версию при создании для Средства моделирования. Необходимо добавить «Условие Устанавливающего Сборки» к «Другой записи» Флагов Компоновщика. Одно условие укажет «Другие Флаги Компоновщика» при создании для Устройства, другое условие сделает так при создании для Средства моделирования. Можно добавить условия устанавливающего сборки путем выбора установки и затем щелчка по меню в нижней левой части окна.

Это создаст дочерний элемент для флагов компоновщика, только включенный, когда правила, указанные в условии устанавливающего сборки, являются истиной. Необходимо будет добавить два условия - один для Устройства и один для Средства моделирования. Установите флаг компоновщика для устройства, как описано выше. Для Средства моделирования необходимо использовать Основу версия SDK путем указания -lxml2. При предыдущей установке флага компоновщика без условия сборки необходимо удалить тот флаг.


История версии документа
| Дата | Примечания |
|---|---|
| 05.08.2009 | Новый документ, описывающий, как работать вокруг ошибки ссылки «Incompatible library version» при использовании libxml2. |