Значение значения -ObjC в других флагах компоновщика: GMaps SDK

Я пробовал интеграцию Google Maps SDK с iOS 6.1. Мне удалось заполнить gmap на симуляторе iOS, следуя инструкциям, приведенным в руководстве по началу работы с GMaps для iOS< /а>

Тогда в чем проблема? Он отлично работает, когда я использую его как отдельный проект. Но когда я объединяю приведенный выше код проекта с моим существующим приложением, оно ведет себя странно, и все ошибки возникают из-за включения значения -ObjC в другие флаги компоновщика в настройках сборки.

Ошибка duplicate symbols for architecture i386

Когда я пропускаю шаг 7 (GMaps iOS), он не дает ошибок. Из-за исключения значения -ObjC он не может идентифицировать конкретный класс библиотеки GMaps и его метод: [GMSCameraPosition cameraWithLatitude:longitude:zoom:]: unrecognized selector sent

История моего приложения iOS: использование сторонней библиотеки SUP (Sybase Unwired Platform). Подключение SAP к приложению iOS. Я предполагаю, что есть что-то неоднозначное с включением среды SUP (настройки сборки), когда я пытаюсь добавить библиотеку GMaps.

Ищу ваших советов.

Спасибо!


person turtle    schedule 06.03.2013    source источник
comment
Для каких повторяющихся символов вы получаете ошибки? Можете ли вы опубликовать полное сообщение об ошибке?   -  person Saxon Druce    schedule 06.03.2013
comment
ld: 431 повторяющийся символ для архитектуры i386   -  person turtle    schedule 06.03.2013
comment
Есть ли у вас минимальный демонстрационный проект, воспроизводящий вашу проблему? Я быстро поискал SUP и нашел документацию, датированную 2010 годом, и сказал, что Xcode 3.2.3 + iOS 4 НЕ поддерживаются. давая четкое указание, что либо я смотрю не на тот документ, либо вам следует искать другую библиотеку.   -  person Christoph    schedule 08.03.2013
comment
когда я перенес свой проект с XCode 4.5.2 на 4.6, он выдал около 300 предупреждений. Я не уверен в причине. Но это нечто отдельное от моей выше обсуждаемой проблемы. Если я работаю только с SUP или только с GMpas, это звучит хорошо. Но когда я использовал оба в одном проекте, следуя обеим инструкциям параллельно, я столкнулся с вышеупомянутой проблемой.   -  person turtle    schedule 08.03.2013
comment
comment
У @CodaFi есть правильный ответ здесь. Кроме того, в отношении части «i386» ошибки повторяющихся символов, которую вы получаете, это является прямым результатом вашего заявления о том, что вы проигнорировали шаг 7, часть которого явно просит вас установить архитектуру на arm7.   -  person john.k.doe    schedule 11.03.2013
comment
Я сказал .. Если я пропущу шаг 7, я не получу ошибок. Скорее приложение вылетает из-за [GMSCameraPosition cameraWithLatitude:longitude:zoom:]: unrecognized selector sent. Я знаю, что обязательно включать шаг 7. Но это не работает, когда я использую его в своем проекте с существующими API-интерфейсами SUP. Ошибка: `повторяющиеся символы для архитектуры i386`... Надеюсь, на этот раз проблема решена.   -  person turtle    schedule 11.03.2013


Ответы (4)


На SO много сообщений о повторяющихся символах для ошибки архитектуры i386. Обычно это означает, что вы дважды определили один и тот же символ в одном пространстве имен. В последний раз я получил эту ошибку из-за того, что случайно включил файл .m вместо файла заголовка .h.

person Alex L    schedule 12.03.2013

Вы проверили архитектуру сборки?

Попробуйте установить Build Active Architecture Only на Yes.

person EsbenB    schedule 12.03.2013

Сегодня я столкнулся с той же проблемой! -ObjC linker flag - При попытке добавить его в другие флаги компоновщика я получаю сообщение об ошибке

Я решил свою проблему, вот что я предлагаю. Возьмите свой исходный проект (без Gmaps и с SUP) и добавьте к нему флаг -ObjC. Вы все еще получаете сообщение об ошибке? Если это так, исключите Gmaps из уравнения. Если вы все еще получаете сообщение об ошибке, проверьте предупреждения о том, о каких файлах оно вас предупреждает. Моя проблема заключалась в том, что у меня было два файла libGoogleAnalytics.a и libGoogleAnalytics_debug.a, и по какой-то причине они не могли сосуществовать с -ObjC.

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

person Segev    schedule 14.03.2013
comment
Видите ли, именно поэтому я постоянно говорю людям воздерживаться от включения сторонних библиотек в свои собственные библиотеки. Это создает беспорядок. Просто скажите пользователям вашей библиотеки связать эту стороннюю библиотеку, и все останется хорошо. - person Till; 15.03.2013
comment
Под просто ссылкой вы имеете в виду не копировать библиотеку в мою или не отмечать добавление к целям? - person Segev; 15.03.2013
comment
СПАСИБО, ребята .. Я обязательно проверю это и дам вам знать. - person turtle; 21.03.2013

Пожалуйста, попробуйте это…

шаг 1: добавьте «-ObjC» к другим флагам компоновщика в «Настройки сборки» вашей «цели», но не к «проекту»

person IKKA    schedule 25.04.2013