Подтвердить что ты не робот

Проблема с IOS7 (только) stdlibС++

Мне нужна помощь. У меня была фреймворк, который использовал stdС++, как std: string. Теперь, когда я создал новое приложение для IOS7, есть проблема с привязкой этой структуры из-за проблем с stdС++ lib:

Undefined символы для архитектуры armv7 "std:: basic_string, std:: allocator > :: _ Rep:: _ S_empty_rep_storage", ссылка из...

Я обнаружил что-то странное, что, когда я изменяю цель Deplyment на ios6 в этом приложении, все работает нормально. С ios7 я вижу ошибки.

У меня уже установлен флаг в других флагах компоновщика: -lstdС++

Любая идея, что ami делает неправильно?

4b9b3361

Ответ 1

Просто обновите этот ответ:

Этот шаг очень важен!

Убедитесь, что Стандартная библиотека С++ установлена ​​в libstdС++ (стандартная библиотека GNU С++) в настройках компоновщика компилятора Apple LLVM 5.0

Фон:

У меня есть приложение iOS, которое резко прекратило строительство для iOS 7 со стандартными ошибками ссылок на библиотеку. Я успешно тестировал приложение на симуляторе и на iPad mini, а также архивировал его, но когда я добавил iPhone 5S для тестирования, я начал получать ошибки ссылок (возможно, из-за новой архитектуры в миксе?).

Поиск ошибок ссылок в Google, я нашел совет для явного добавления libstdС++. dylib в связанные библиотеки. Это не сработало.

Я экспериментировал, добавив libstdС++. 6.dylib в связанные библиотеки; это устранило ошибки связи, но приложение разбилось в стандартном коде библиотеки С++ очень рано.

Удаление явных дополнений библиотеки и изменение настройки компилятора в настройках сборки, как отмечено выше, исправили ошибки ссылок и проблемы времени выполнения.

Благодаря rimestad для указателя!

Ответ 2

Честно говоря, мне не нравится приведенный выше ответ, поскольку он использует статический lib, а не динамический!

У меня возникла проблема и я обнаружил, что проблема заключается в том, что xcode не может найти файлы С++ в вашем проекте и, следовательно, предполагает, что libstС++ не нужен!

Довольно раздражает, когда вы ссылаетесь на статическую библиотеку, которая ее использует!

Решение:

  • Добавьте пустой проект .mm к проекту!
  • Убедитесь, что Стандартная библиотека С++ установлен в libstdС++ (стандартная библиотека GNU С++) в настройках сборки

Это сработало для меня, и мне не пришлось добавлять -lstdС++ в другие флаги компоновщика!

Надежда, которая помогает другим с той же проблемой.

Ответ 3

Спасибо за вашу помощь. Я нашел решение. Я использовал флаг -lstdС++ в других флагах компоновщика, но сейчас этого недостаточно. Мне пришлось добавить "libstdС++. 6.0.9.dylib в BuildPhases- > Link Binary With Libraries. Где-то в сетевой информации было указано, что xcode имеет проблемы с выбором ios7 stdС++ lib, и его следует выбирать вручную.

С уважением, Marek

Ответ 4

У меня была аналогичная проблема, но ответ @MarekM разрешил только часть моей проблемы, поэтому я попытался добавить libstdС++. dylib и libstdС++. 6.dylib, и это делает всю компиляцию ошибки.