Ошибка компоновщика (только средство моделирования) с собственной библиотекой после обновления iPhone SDK 4.0

Я недавно обновил к iPhone SDK 4.0 и больше не могу разработать свой проект для средства моделирования iPhone. Проблема состоит в том, что классы одной из моих собственных библиотек больше не могут находиться ld:

"_OBJC_CLASS_$_Book", referenced from:
   objc-class-ref-to-Book in Category.o
   (maybe you meant: ...)
ld: symbol(s) not found
collect2: ld returned 1 exit status

Я уже читал некоторые другие сообщения о подобных проблемах, как, например, здесь. "К сожалению", моя проблема не имеет никакого отношения к платформе SDK, но с моим собственным lib, таким образом, решения упомянули, там не применимы здесь.

Библиотека включена под "Двоичным файлом Ссылки С Библиотеками" моей цели, пути поиска библиотеки корректны (проверил это с XCode и с редактором простого текста непосредственно в моем файле проекта), и правильно добавил к команде gcc.

Я использую iPhone Simulator 3.2 в качестве Основы SDK, но та же проблема происходит с SDK 4.0. Снова, это работает с моей целью устройства, но не с моей целью средства моделирования. Это работало с обоими, тем не менее, прежде чем я обновил от iPhone SDK 3.2 до 4,0. Я также смог воспроизвести эту ошибку путем создания нового проекта только с одним файлом и связанным lib. Однако lib должен быть хорошо, поскольку он работал со средством моделирования 3.2, прежде чем я обновил XCode и мой SDK.

Больше Фактов: Mac OS X 10.6.3, XCode 3.2.3 64-разрядных, iPhone OS 3.2, GCC 4.2

Любая справка высоко ценилась бы.


Править:

После переустановки SDK 3.2 все работало как ожидалось снова. Это должно быть отмечено, что SDKs в папке,/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs, перезаписываются с каждой установкой. Я затем пытался переустановить SDK 4.0 снова и ту же ошибку как выше произошедшего. Я ничего не изменил в своем проекте и всегда использовал 3.2 в качестве Основы SDK.

Проблема может поэтому возможно быть сужена к следующим опциям:

  • Измененный sth. Apple в средстве моделирования SDK 3.2, которое вызывает проблему
  • изменение в XCode 3.2.3 причины проблема
  • неправильные/недостающие флаги компилятора при создании моей собственной библиотеки (те флаги, однако, только вызвали бы проблемы с измененным SDK или измененным IDE),

Я также сделал разность папки на/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.2.sdk и для старого и для новой версии этой папки. Оказалось, что существуют на самом деле незначительные изменения в "том же" SDK. Я все еще думаю, что это - проблема флага IDE/compiler, все же.

Кто-либо какие-либо идеи? Я не хочу придерживаться 3.2 навсегда...

6
задан Community 23 May 2017 в 10:24
поделиться

2 ответа

Я наконец смог выяснить, какие флаги отсутствовали в моем вызове компилятора для создания моей библиотеки. Итак, чтобы ответить на мой вопрос: если у кого-то есть проблемы с привязкой его / ее статической библиотеки к цели в XCode 3.2.3 (с использованием iPhoneSimulator3.2.sdk или iPhoneSimulator4.0.sdk), вам необходимо создать свою библиотеку со следующим два флага:

-fobjc-abi-version = 2

-fobjc-legacy-dispatch

Еще раз спасибо PhoneyDeveloper за его подсказки .

1
ответ дан 17 December 2019 в 20:28
поделиться

Убедитесь, что вы перекомпилировали свои библиотеки с тем же базовым SDK, который вы используете для своего приложения.

1
ответ дан 17 December 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: