2013-06-28 5 views
4

Является ли стандартная библиотека C++ (например, std :: string stream) доступной на iOS и Android (с использованием JNI/NDK)? Если да:Насколько кросс-платформа является стандартной библиотекой C++?

В какой степени это поддерживается? Каким образом можно использовать специальные функции, такие как консоль? Как быстро/надежно? Сколько других мобильных платформ доступно? Могу ли я рассчитывать на то, что при переносе на мобильные платформы (например, на iOS) не нужно модифицировать много кода, используя библиотеку std?

+0

Я не знаком с этими платформами, но стандартная библиотека * должен * быть доступны на все платформы, для которых существует ++ компилятор C. –

ответ

2

Стандартная библиотека C++ доступна на обоих. Кроме того, у iOS довольно долгое время был C++ 11.

Обе платформы - в основном основанные на POSIX - имеют концепцию консоли IO, но ни один из них не обеспечивает доступ к ней в пользовательском интерфейсе, и ни на одном из них вы, по крайней мере, из коробки, не запускаете консольное приложение напрямую.

Как следствие, очевидно, что вы не можете использовать консольный ввод-вывод для любого взаимодействия с вашим приложением - если только это не так, вы его создаете с использованием API интерфейса пользователя платформы.

С точки зрения переносимости на обеих платформах не должно быть никаких проблем - это библиотека GNU Std G ++ на Android и библиотека Clang C++ на iOS. Переносимость - это не проблема для iOS, но вам, вероятно, будет интересно создавать привязки JNI для Android.

На самом деле, вы только сможете создавать обратные контуры приложений на C++. Все пользовательские интерфейсы будут явно не переносимыми и, как правило, должны быть реализованы на языке интерфейса пользовательского интерфейса.

Windows Phone 8 позволяет родным приложениям, а C++, по-видимому, является языком выбора для их реализации. BlackBerry OS 10 является фундаментально QNX под капотом, который также совместим с POSIX.

+0

«На самом деле, вы только когда-либо можете создавать back-end приложений на C++». - Вы правы: я работаю над кросс-платформенным игровым движком, и хотя C++ можно компилировать на многих платформах, мне все же приходится писать сегмент кода платформы для каждой платформы, которую я программирую, например. Для iOS я пишу кучу кода Objective-C в качестве оболочки для моего C++. – hddh

1

Насколько я могу судить, стандартные библиотеки должны быть стандартами на всех платформах. Теперь их внутренняя реализация может варьироваться, но они должны выполнять задачу, для которой они были введены.

Обычно std lib очень эффективен, быстро и хорошо протестирован, поэтому он должен быть надежным.

Фактический улов заключается в том, что std lib должен быть включен в реализацию C++, но полностью зависит от поставщика, реализующего C++, включен ли std lib или нет. Даже если они не включают std lib, есть большая вероятность, что вы можете найти альтернативную реализацию для этой платформы. Тогда все, что вам нужно сделать, это связать эту библиотеку с вашим кодом.

Предполагая, что существует компилятор C++, поддерживающий основные функции.

Даже если это невозможно, вы всегда можете перенести необходимые функции std на эту конкретную платформу в качестве пользовательской библиотеки lib.

Надеется, что это помогает,

Смежные вопросы