2011-06-09 6 views
1

Je suis un développeur Java par métier et mon exposition à C++/JNI a été limitée jusqu'à maintenant.Android NDK: documentation de la bibliothèque gnustl_static?

J'ai réussi à faire assez bien jusqu'à présent, mais maintenant que je suis aventurant dans faire « Clever » des choses que je suis de plus en plus limité par l'aveuglette:

J'utilise la bibliothèque gnustl_static à cause d'autres codes que j'ai portés dans le même espace de projet natif. Cependant, je trouve très difficile d'apprendre le C++ avec une main attachée derrière mon dos en raison de la nature réduite de la bibliothèque. Tout serait bien, il y avait un Javadoc (Évidemment pas un Javadoc;)) ou une telle documentation que je pourrais utiliser pour trouver ce qui était inclus dans cette bibliothèque et à son tour, ce qui était contenu dans ces bibliothèques (et pendant que je souhaite la lune) pourquoi certains types tels que "carte" ne sont pas inclus et quoi de mieux à utiliser à la place! De la recherche de Google ces dernières semaines, je n'ai pas rencontré de ressource utile centralisée et de la connaissance et l'expertise de tout le monde, j'ai l'impression qu'il me manque une ressource vitale et de base!

Quelqu'un pourrait-il me donner un coup de main et me diriger vers la documentation ou des tutoriels ou des exemples ou quelque chose qui m'aidera à naviguer dans les eaux dangereuses du codage Android JNI/C++/Native?

EDIT:

Quelqu'un m'a expliqué que STL est Standard Template Library et il y a un lien vers ce qui est contenu dans ici: http://www.sgi.com/tech/stl/stl_index.html

Ils ont également expliqué que la bibliothèque gnustl_static est la bibliothèque STL basée sur des machines GNU et il est un ensemble d'en-têtes situés à l'intérieur: $ {ANDROID-NDK} \ sources \ cxx-stl \ gnu-libstdC++ \ Include

Autant dire ce qui a hel incommensurablement sortez-moi car je n'avais aucune idée de ce qui se passait. Je n'en savais pas assez pour savoir où regarder.

Je suis encore un peu inquiet du fait que STL ne semble pas appartenir à quelqu'un? (Je pense au corps de style Apache ici). Quelqu'un peut-il me corriger à ce sujet?

Comme vous pouvez le dire. Encore un peu à la dérive ici.

EDIT2:

Si la STL est la bibliothèque utilisée pour décrire tous les types et les fonctions non primitives ... pourquoi est string.h tiré de: $ {ANDROID-NDK} \ platforms \ Android PS: Je sais que j'ai l'air stupide ici, mais je promets que je ne suis pas informée. Je ne suis pas sûr où commencer regardant comme je le ressens par nécessité que j'ai commencé au milieu. Encore une fois, des liens vers tout ce que vous pensez que je trouverais utile serait génial!

+0

Je ne pense pas que cette bibliothèque est réduite de quelque façon que ce soit. Il devrait être GNU stdlibC++ dans son intégralité. –

+0

@Jan Hudec, j'étais sous de fausses impressions, il semble. Ajouté un Modifier à mon message. – Graeme

+0

J'ai mis à jour la réponse ci-dessous pour essayer de répondre aux modifications 1 et 2. –

Répondre

4

gnustl_static est GNU stdlibC++ car il vient avec gcc. C'est official documentation is here, mais il est probablement inutile comme tutoriel, donc de préférence obtenir un livre décent sur C++.

La bibliothèque ne semble pas être coupée.Cela peut vous ressembler car la bibliothèque C++ standard définie dans la spécification est simplement beaucoup plus petite que celle de Java. Il a un accès standard aux fichiers, mais pas de manipulation de fichiers, pas de threads, pas de réseau, etc.

Dans l'interface Android POSIX est généralement disponible (C simple). Si vous voulez C++, essayez d'obtenir boost, qui enveloppe les différentes interfaces spécifiques au système dans des composants C++ portables décents. Cependant, de nombreux services sur la plateforme Android ne seront pas disponibles, sauf en passant par la couche Java. Modification de l'annonce: La spécification de la bibliothèque standard appartient à quelqu'un, à savoir l'ISO. Malheureusement, la norme n'est pas téléchargeable gratuitement auprès de l'ISO, mais la recherche sur le Web révèle this. Édition2: La bibliothèque standard C++ est basée sur la bibliothèque standard C sous-jacente. La bibliothèque standard C++ a les en-têtes sans extension, tandis que la bibliothèque C standard a des en-têtes avec le suffixe .h. Les deux sont définis par des normes ISO (différentes). La bibliothèque C est la plus liée au système d'exploitation (dépend de la méthode spécifique pour effectuer les appels système), elle est donc fournie avec le système. D'autre part, la bibliothèque C++ est plus liée au compilateur alors qu'elle utilise la bibliothèque C pour parler au système, elle est donc fournie avec le compilateur. C'est pourquoi ils vivent dans des endroits différents.

+0

Merci beaucoup. "Ad Edit2" était particulièrement clair et utile et m'a aidé à construire une autre grande partie des connaissances de base qui me manquaient. – Graeme

Questions connexes