Собираюсь в ближайшем времени делать портирование на iOS (не путать с OSX) приложение которое активно использует boost.
С header only библиотеками вроде как проблем не должно возникнуть что делать с остальными? Такими как filesystem, threads и т.п. у OSX с ними все OK, как быть с iOS?
Спасибо.
Здравствуйте, nen777w, Вы писали:
N>С header only библиотеками вроде как проблем не должно возникнуть что делать с остальными? Такими как filesystem, threads и т.п. у OSX с ними все OK, как быть с iOS?
ПО уму, про них надо бы забыть. Тем не менее, есть вот такой проектик, может поможет тебе чем.
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Почему?
Потому что OS предоставляет более удобный и хорошо заточенный на интеграцию с остальными компонентами системы API, к которому, зачастую, из BOOST доступа и не получить.
Простой пример: из BOOST не получить доступа к GCD, а в случае с iOS лучше пользоваться им, а не потоками (в большинстве ситуаций).
Здравствуйте, kaa.python, Вы писали:
KP>Потому что OS предоставляет более удобный и хорошо заточенный на интеграцию с остальными компонентами системы API, к которому, зачастую, из BOOST доступа и не получить.
А, ну это для всех платформ справедливо, не только для iOS. Я думал есть какие-то специфические грабли которые не заметил.
З.Ы.: используем boost в т. ч. и на iOS, после небольшой доработки напильником вполне себе работает.
Здравствуйте, kaa.python, Вы писали:
KP>Модули уровня "только заголовки" — да. Но какой толк от той же файловой системы или потоков или сети?
Толк очень простой: на iOS/Android и всех десктопах один и тот же код и при портировании ядра проекта никаких специальных усилий, кроме обеспечения плюсового рантайма и сборки boost (актуально для Android) для этого предпринимать не надо.
Здравствуйте, MescalitoPeyot, Вы писали:
MP>Толк очень простой: на iOS/Android и всех десктопах один и тот же код и при портировании ядра проекта никаких специальных усилий, кроме обеспечения плюсового рантайма и сборки boost (актуально для Android) для этого предпринимать не надо.
Т.е. threads, asio и filesystem нормально работают на этих платформах?
Здравствуйте, kaa.python, Вы писали:
KP>Т.е. threads, asio и filesystem нормально работают на этих платформах?
С iOS особых проблем не припомню. Ну разве что раньше boost в thumb весь не собирался, как сейчас не знаю, он у нас в arm.
С Андроидом есть нюансы. Если забыть про недо-поддержку плюсов (нет wchar_t, исключения с STL появились недавно, раньше надо было NDK пересобирать; впрочем, и сейчас надо, если хочешь libstdc++ so'шкой и без багов), баги (в духе креша при выводе float в std::ostream, соответственно хана lexical_cast с float и вывод date_time), JNI-специфику (надо аттачить/деттачить треды к ява-машине, пути для класслоадера в мейн-треде не такие как в нативных и т. д.), специфику реализации сокетов (в духе — а на вот этом вот девайсе не работает мультикаст), то из совсем сломанного можно назвать thread_specific_ptr, и все что использует wchar_t (wserialization, boost::filesystem::wpath). К счастью, от них можно сравнительно безболезненно отказаться.