Проблема с 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 делает неправильно?
Ответы
Ответ 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, и это делает всю компиляцию ошибки.