Xcode не может найти XMPPFramework - как вы исправляете ошибки компоновщика? - PullRequest
3 голосов
/ 03 февраля 2012

это должно быть распространенной проблемой, но я был бы признателен за любую помощь. У меня есть проект Xcode 4.2, который просто не будет собираться без ошибок. Проблема в XMPPFramework для iOS. Я уже следовал инструкциям в вики.

Я не совсем понимаю, что происходит, но Xcode не может найти мою XMPPFramework (для iOS). Вот ошибка, и я не знаю, как ее исправить. Я добавил путь к XMPPFramework в проекте и настройки цели. Мои файлы XMPPFramework находятся в корне моего проекта Xcode, но Xcode не может найти файлы. Что такое путь заголовка пользователя, путь платформы и путь поиска библиотеки? Я добавил путь к XMPPFramework для всех этих полей без какой-либо выгоды. Я использовал $ (унаследованные) и $ (SRCROOT) и проверил рекурсивную кнопку. Все мои очки тому, кто поможет мне это исправить.

Неопределенные символы для архитектуры i386:
"_ExtractFileNameWithoutExtension", на который ссылаются из: - [AppDelegate_iPhone contextDidSave:] в AppDelegate_iPhone.o - [AppDelegate_iPhone xmppStreamDidSecure:] в AppDelegate_iPhone.o - [AppDelegate_iPhone xmppStreamDidConnect:] в AppDelegate_iPhone.o - [AppDelegate_iPhone xmppStreamDidAuthenticate:] в AppDelegate_iPhone.o - [AppDelegate_iPhone xmppStream: didNotAuthenticate:] в AppDelegate_iPhone.o - [AppDelegate_iPhone xmppStream: didReceiveIQ:] в AppDelegate_iPhone.o - [AppDelegate_iPhone xmppStream: didReceiveMessage:] в AppDelegate_iPhone.o ... "_OBJC_CLASS _ $ _ DDLog", по ссылке из: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ DDTTYLogger", на который ссылаются из: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPStream", на который ссылаются из: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPReconnect", на который ссылаются: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPRosterCoreDataStorage", на который ссылаются: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPRoster", на который ссылаются: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPvCardCoreDataStorage", на который ссылаются из: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPvCardTempModule", на который ссылаются из: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPvCardAvatarModule", на который ссылаются из: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPCapabilitiesCoreDataStorage", на который ссылаются из: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPCapabilities", на который ссылаются: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPPresence", на который ссылаются: objc-class-ref в AppDelegate_iPhone.o "_OBJC_CLASS _ $ _ XMPPJID", на который ссылаются из: objc-class-ref в AppDelegate_iPhone.o objc-class-ref в AccountViewController.o objc-class-ref в AddBuddyViewController.o objc-class-ref в ChatViewController.o objc-class-ref в GroupChatViewController.o ld: символ (ы) не найден для архитектуры i386

clang: ошибка: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

Ответы [ 2 ]

3 голосов
/ 05 февраля 2012

Неважно, разобрался. Вы не можете просто перетащить файлы в проект. Вы должны скопировать их в папку проекта, а затем добавить их.

0 голосов
/ 25 мая 2013

Как дополнение, я хотел бы сказать, что если вы используете Xcode 4.6.1 или новее, то процедура копирования файлов в папку проекта и перетаскивания их в Xcode также не разрешит этот компоновщик ошибка.

Обходной путь может заключаться в том, чтобы создать «Группы» самостоятельно в проекте XCode (щелчок правой кнопкой мыши -> Новая группа), а затем добавить соответствующие файлы / папки в эти группы, перетаскивая их. Убедитесь, что не установлен флажок «Копировать файлы в исходную папку». Тем не менее, не забудьте проверить опцию «Добавить в цель». Чтобы узнать, какие группы создать, вы можете взглянуть на их пример проекта XMPP. Создайте их в той же иерархии, как показано в этом проекте.

Также убедитесь, что вы включили CoreData.framework и SystemConfiguration.framework в фреймворки.

Если каким-то образом вам все равно не удается заставить его работать, я бы посоветовал вам взглянуть на пример проекта XMPP, включенного в главную копию XMPPFramework, которую вы скачали по их ссылке Git. Проверьте, как они организовали файлы в группы и структуру папок своего проекта. Просто следуйте за свитой, и вам будет хорошо.

...