Как указать версию совместимости для dylib в проектах iPhone?

StackOverflow https://stackoverflow.com/questions/1259007

Вопрос

Недавно я добавил статическую библиотеку (mobclix) в свой проект iPhone, что потребовало от меня установить базовый SDK версии 3.0.Заявлено, что эта библиотека совместима с версией 2.2, и пока это похоже на правду.Я установил цель развертывания проекта на 2.2.Никаких проблем.

Теперь я также использую libxml2 в этом же проекте.Судя по всему, libxml2.2.dylib в OS 3.0 новее, чем в OS 2.X (версии 10 и 9 соответственно).Однако мой код, использующий libxml2, уже был совместим с версией libxml2, включенной в OS 2.X.Поскольку мне нужно было установить для базового SDK значение 3.0, «версия совместимости»/минимальное требование к версии/зависимость автоматически устанавливается на более новую версию libxml2.Когда я пытаюсь запустить приложение в ОС 2, я получаю эту ошибку времени выполнения (очевидно):

  Dyld Error Message:
  Library not loaded: /usr/lib/libxml2.2.dylib
  Referenced from: /Users/Martijn/Library/Application Support/iPhone Simulator/User/Applications/4D5456DE-F297-4DF4-ACA6-DA8BBBBBA914/Luisterpaal.app/Luisterpaal
  Reason: Incompatible library version: Luisterpaal requires version 10.0.0 or later, but libxml2.2.dylib provides version 9.0.0

Можно ли где-нибудь обойти требование версии?Или есть другие идеи по решению этой проблемы?

Это было полезно?

Решение

Версия совместимости устанавливается в соответствии с версией, встроенной в dylib текущего SDK во время сборки.Я не нашел способа изменить или переопределить это.

Однако в цели в Xcode в ветке «Связывание с двоичными файлами с библиотеками» есть возможность «слабо» связать dylib.Это пропускает проверку версии во время загрузки dylib (среды выполнения).Тогда вы обязаны вызывать только существующие функции.Вызов несуществующих функций приведет к сбою приложения.

Другие советы

Судя по всему, в SDK 3.0 произошли изменения, которые нарушили совместимость с libxml.Apple написала об этом здесь:

http://developer.apple.com/iphone/library/qa/qa2009/qa1659.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top