CHDataStructures.framework не будет компилироваться для iOS в Xcode 4 - PullRequest
3 голосов
/ 24 марта 2011

Я скачал исходный код CHDataStructures (r709) и попытался скомпилировать статическую библиотеку iOS под xCode 4. При компиляции жаловался:

Xcode build errors

Кто-нибудь может дать мне несколько идей, как его скомпилировать?

1 Ответ

4 голосов
/ 24 марта 2011

Как автор фреймворка, я был заинтригован, когда Дейв Делонг передал мне эту ссылку.

Оказывается, это не из-за Xcode 4, а из-за изменений в iOS 4.3 SDK (икстати, 10,7 SDK тоже).Я использовал макрос OBJC_EXPORT с __attribute__((visibility("hidden"))) (для которого я определил макрос с именем HIDDEN).Это не было проблемой, пока 4.3 / 10.7 не изменило определение макроса OBJC_EXPORT в /usr/include/objc/objc-api.h ...

Раньше он был определен как OBJC_EXTERN, но теперь он определен как OBJC_EXTERN OBJC_VISIBLE,который разрешается до OBJC_EXTERN __attribute__((visibility("default"))).Таким образом, мои объявления, в которых использовался HIDDEN OBJC_EXPORT, внезапно начали преобразовываться в:

__attribute__((visibility("hidden"))) OBJC_EXTERN __attribute__((visibility("default")))

По сути, причиной появления ошибок были противоположные атрибуты видимости.(Готово, сражайтесь!)

Я только что протестировал и зафиксировал исправление, которое заменяет HIDDEN OBJC_EXPORT на HIDDEN.Очевидно, эти символы не нужно было объявлять как extern, так как они работают без этих макросов.

Итак, краткий ответ на ваш вопрос: обновление до версии 710.; -)

...