Я использую libcurl в проекте Mac, построенном и скомпилированном на OS 10.7 Lion. Я могу просто подключиться к динамической библиотеке, используя опцию -lcurl в других флагах Linker или добавив библиотеку в мой проект. Все работает так, как предполагалось.
Я хочу, чтобы приложение работало и с ОС 10.6 и 10.5. Я настроил целевой объект развертывания соответствующим образом. Когда я запускаю приложение в одной из этих версий ОС, я получаю dyld-ошибку:
Библиотека не загружена:/usr/lib/libcurl.4.dylib Причина: Несовместимая версия библиотеки: X требует версии 7.0.0 или новее, но libcurl.4.dylib предоставляет версию 6.0.0.
Это аналогичная проблема для Mac OS 10.5.
Как я могу связать библиотеку libcurl с системой в Xcode в Mac OS 10.7, чтобы приложение также работало на 10.6 и 10.5?
Я просмотрел пару вариантов:
-
Один из них - изменить базовый SDK, как это предлагается в этом сообщении: Версия для Mac OS X libcurl dylib Если я это сделаю, приложение работает нормально. Но это не вариант для меня. Я должен использовать 10.7 SDK, поэтому регресс на более раннюю версию SDK неприемлем.
-
Я пробовал слабую связь с библиотекой, используя параметр -weak_library/usr/lib/libcurl.dylib в других флагах Linker. Приложение запускается, но затем падает, когда я пытаюсь ссылаться на символы libcurl. Тем не менее, я знаю, что это не проблема с несовместимым кодом, потому что он работает, когда я изменяю базовый SDK.
-
Я пробовал динамически загружать библиотеку в код с помощью dlopen ( "libcurl.dylib", RTLD_LOCAL | RTLD_LAZY); Библиотека загружается, но я должен вручную привязать все символы, которые я ссылаюсь?
Конечно, должен быть способ сделать это. Библиотека libcurl установлена на Mac OS 10.5, 10.6 и 10.7, но приложение не может использовать доступную библиотеку в более старых версиях Mac OS. Как я могу это исправить?