Android NDK: документация библиотеки gnustl_static? - PullRequest
1 голос
/ 09 июня 2011

Я по профессии разработчик Java, и мое знакомство с C ++ / JNI до сих пор было ограничено.

До сих пор мне удавалось довольно хорошо, но теперь я решаюсь делать это "Умные вещи, которые я становлюсь все более и более ограниченным, летая вслепую:

Я использую библиотеку gnustl_static из-за другого кода, который я перенес в то же родное пространство проекта.Однако я нахожу очень трудным изучать C ++ с одной рукой, связанной за моей спиной, из-за урезанной природы библиотеки.

Все было бы хорошо, если бы был Javadoc (Очевидно, не Javadoc;)) или какую-то такую ​​документацию, которую я мог бы использовать, чтобы найти то, что было включено в эту библиотеку и, в свою очередь, что содержалось в этих библиотеках (и пока я желаю луны), почему некоторые типы, такие как «карта», не являютсяв комплекте и что лучше использовать вместо этого!

Из поиска в Google в эти последние недели я не наткнулся на какой-либо централизованный и полезный ресурс, и из-за знаний и опыта всех остальных я чувствую, что мне не хватает жизненно важного и основного ресурса!

Может ли кто-нибудь помочь мне и указать на документацию, учебные пособия или примеры или что-то, что поможет мне ориентироваться в опасных водах кодирования JNI / C ++ / Native Android?

РЕДАКТИРОВАТЬ:

Кто-то объяснил мне, что STL является стандартной библиотекой шаблонов и тамздесь есть ссылка на то, что содержится внутри: http://www.sgi.com/tech/stl/stl_index.html

Они также объяснили, что библиотека gnustl_static - это библиотека STL, основанная на машинах GNU, и это набор заголовков, расположенных внутри: $ {ANDROID-NDK} \ sources \ cxx-stl \ gnu-libstdc ++ \ include

Достаточно сказать, что это неизмеримо помогло мне, так как я понятия не имел, что происходит.Я просто не знал достаточно, чтобы знать, где искать.

Я все еще немного обеспокоен тем фактом, что STL, похоже, не принадлежит кому-то?(Я думаю, что тело в стиле Apache здесь).Кто-нибудь может исправить меня?

Как вы можете сказать.Все еще немного дрейфуют здесь.

EDIT2:

Если STL - это библиотека, используемая для описания всех не примитивных типов и функций ... почему вызывается string.h из: $ {ANDROID-NDK} \ platform \ android-9 \ arch-arm \ usr \ include

PS: Я знаю, что здесь звучит глупо, но я обещаю, что я просто не информирован.Я просто не уверен, где начать , глядя, как я чувствую необходимость, я начал в середине.Опять же, ссылки на все, что вы считаете полезным, были бы великолепны!

1 Ответ

4 голосов
/ 09 июня 2011

gnustl_static - это GNU stdlibc ++, так как он поставляется с gcc. Это официальная документация здесь , но она, вероятно, бесполезна в качестве учебного пособия, поэтому желательно получить хорошую книгу по C ++.

Библиотека не вырубается. Для вас это может выглядеть так, потому что стандартная библиотека C ++, определенная в спецификации, просто намного меньше, чем в Java. У него стандартный доступ к файлам, но нет манипуляций с файлами, нет потоков, нет сети и т. Д.

В Android POSIX интерфейс обычно доступен (обычный C). Если вам нужен C ++, попробуйте получить boost , который объединяет различные системные интерфейсы в приличные переносимые компоненты C ++. Однако многие сервисы на платформе Android не будут доступны, если не пройти слой Java.

Редактирование рекламы: Спецификация стандартной библиотеки принадлежит кому-то, а именно ISO. К сожалению, стандарт не может быть свободно загружен из ISO, но поиск в Интернете показывает это .

Ad Edit2: стандартная библиотека C ++ основана на базовой стандартной библиотеке C. Стандартная библиотека C ++ имеет заголовки без расширения, в то время как стандартная библиотека C имеет заголовки с суффиксом .h. Оба определяются (разными) стандартами ISO. Библиотека C больше всего связана с операционной системой (зависит от конкретного метода для выполнения системных вызовов), поэтому она поставляется вместе с системой. С другой стороны, библиотека C ++ более привязана к компилятору, в то время как она использует библиотеку C для взаимодействия с системой, поэтому она поставляется вместе с компилятором. Вот почему они живут в разных местах.

...