Проблема с IOS7 (только) stdlibC++
Мне нужна помощь. У меня была фреймворк, который использовал stdC++ как std: string. Теперь, когда я создал новое приложение только для IOS7, возникла проблема со связыванием этого фреймворка из-за проблем с stdC++ lib:
Неопределенные символы для архитектуры armv7 "std::basic_string, std::allocator >::_Rep::_S_empty_rep_storage", на которые ссылаются из...
Я обнаружил кое-что странное, что когда я меняю цель Deplyment на ios6 в этом приложении, все работает нормально. С ios7 я вижу ошибки.
У меня уже есть флаг, установленный в других флагах компоновщика: -lstdC++
Есть идеи, что я делаю неправильно?
4 ответа
Просто обновление на этот ответ:
Этот шаг очень важен!
Убедитесь, что для стандартной библиотеки C++ установлено значение libstd C++ (стандартная библиотека GNU C++) в настройках компиляции Apple LLVM 5.0
Фон:
У меня есть приложение для iOS, которое внезапно прекратило сборку для iOS 7 со стандартными ошибками ссылок на библиотеки. Я успешно тестировал приложение на симуляторе и на iPad mini, а также заархивировал его, но когда я добавил iPhone 5S для тестирования, я начал получать ошибки ссылок (возможно, из-за новой архитектуры в миксе?).
При поиске ошибок ссылок в Google я нашел совет явно добавить libstd C++. Dylib в связанные библиотеки. Это не сработало.
Я экспериментировал, добавив libstd C++. 6.dylib вместо связанных библиотек; это устраняло ошибки ссылок, но приложение очень рано зависало в коде стандартной библиотеки C++.
Удаление явных дополнений библиотеки и изменение настроек компилятора в настройках сборки, как отмечалось выше, исправило ошибки ссылок и проблемы во время выполнения.
Спасибо rimestad за указатель!
Если честно, мне не нравится приведенный выше ответ, так как он использует статический lib, а не динамический!
Я сам столкнулся с проблемой и обнаружил, что проблема в том, что xcode не может найти какие-либо файлы C++ в вашем проекте и, следовательно, предполагает, что libstC++ не нужен!
Довольно раздражает, когда вы ссылаетесь на статическую библиотеку, которая ее использует!!
Решение:
- Добавьте пустой файл.mm в ваш проект!
- Убедитесь, что в настройках сборки для стандартной библиотеки C++ установлено значение libstdC++ (стандартная библиотека GNU C++)
Это сработало для меня, и мне не нужно было добавлять -lstdC++ в другие флаги компоновщика!
Надеюсь, что это помогает другим с той же проблемой.
Спасибо за вашу помощь. Я нашел решение. Я использовал флаг -lstdC++ в других флагах компоновщика, но этого сейчас недостаточно. Мне пришлось добавить "libstdC++.6.0.9.dylib в BuildPhases->Link Binary With Libraries. Где-то в сети была информация о том, что у xcode есть проблемы с выбором ios7 stdC++ lib, и его нужно выбирать вручную.
С уважением, Марек
У меня была похожая проблема, но ответ @MarekM решил только часть моей проблемы, поэтому я попытался добавить libstdC++. Dylib и libstdC++.6.dylib, и это устраняет все ошибки компиляции.