J'essaie d'écrire une application Android simple à l'aide du NDK et C ++. Spécifiquement, j'aimerais utiliser GNUSTDC ++ inclus avec la nouvelle version du NDK (R7). La bibliothèque JNI a compilée et fonctionnait parfaitement comme c, mais maintenant que j'essaie d'introduire C ++, j'ai rencontré des problèmes.
J'ai ajouté TOUT C symboles importés de Curieusement, ajouter les en-têtes Stlport (en Edit: J'ai configuré mon projet basé sur: p> http://mhandrrrrrrrroid.wordpress.com/2011/01/23/utenture-eclipse-for-android-cc-development/ p> p> $ {ndk_root} / sources / cxx-stl / gnu-libstdc ++ / include / code> sur les chemins d'accès à mon projet, et le
#includes code> en ligne sont résolus. Cependant, tenter d'utiliser réellement une classe STL (telle que
vecteur code>), donne des résultats
symbole 'Vector' n'a pas pu être résolu code>. P>
#include code> avec
'Malloc' n'a pas pu être résolue code> et ainsi de suite. P>
$ {NDK_ROOT} / Sources / CXX-STL / STLORT / STLORT CODE>) corrige tous mes problèmes. Cependant, je suis relié à GNU C ++, pas de stlport, il s'agit donc d'une "solution" inconvenue et inappropriée au mieux. Il semble étrange que ces en-têtes fonctionnent, mais les autres ne le feraient pas. Est Eclipse omettant d'indexer ou de résoudre les en-têtes GNU C ++? P>
android.mk h3>
application.mk h3>
3 Réponses :
Lisez ceci, il a la solution:
http: / /comments.gmane.org/gmane.fhandheldhelds.android.ndk/14371 p>
Le résumé, au cas où le lien meurt un jour est celui-ci: p>
C'est Un bug dans la déclaration du module GnustL_Shared. Désolé, cela sera corrigé dans la prochaine version.
Entre-temps, vous pouvez changer manuellement $ NDK / Sources / CXX-STL / GNU-LIBSTDC ++ / android.mk code> et remplacer la ligne indiquant: p>
LOCAL_EXPORT_LDLIBS := $(call host-path,$(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libsupc++.a)
Malade confirmer cela sous peu, puis acceptez votre solution. Merci beaucoup!
Pour confirmer que j'ai frappé ce problème dans NDK-R8, mais pour confirmer que ce chemin a été ajouté à celui-ci dans la dernière version.
Je sais que ce n'est pas une solution parfaite, mais au moins cela vous permettra de cliquer sur "Exécuter" ou "Débogage" via Eclipse: P>
Pour moi, les erreurs que j'ai nécessaires pour passer jusqu'à présent sont: p>
Comme je l'ai dit, ce n'est pas parfait et que vous manquez de réelles erreurs en raison de cela, mais vous avez toujours la capacité de sélectionner habituellement «Aller à la déclaration» et certaines capacités de contrôle de la syntaxe, ainsi que la possibilité de lancer votre programme. L'étape de NDK-Build attrapera de toute façon des erreurs réelles, donc ce n'est vraiment pas une énorme perte. Honnêtement, je ne suis pas sûr de la source de cette question. Il est probable qu'il s'agisse d'être un bug eclipse. P>
Off Sujet mais pertinent: Vous pouvez également utiliser le NDK-GDB via Eclipse. Le tutoriel est sur le blog lié à l'OP, mais Voici un lien direct quand même . P>
Bonne chance! P>
Edit (suivi): P>
J'ai depuis compris un moyen de contourner ce problème, au moins sur ma boîte. L'OP a dit que, y compris les en-têtes de Stlport travaillaient pour lui. Ce n'est pas pour moi, au début. Je devais détruire mon projet Eclipse et commencer fraîche (pour une raison quelconque, cela ne me laisserait pas supprimer certaines définitions). Ajout de STLPORT Fixe des problèmes, mais dans NDK R7B, j'avais toujours des erreurs étranges (par exemple, NULL n'a pas été définie même après inclure STDDEF). J'ai fini par avoir à inclure aussi les en-têtes X86. Ceux-ci devraient se chevaucher largement avec les bras, cependant, il est utile d'avoir les bras «sur le dessus» de l'ordre incluant. P>
Donc, si vous rencontrez dans le même problème que moi, ajoutez p>
$ ndk_dir / plates-formes / Android-14 / à votre liste d'éclipse comprend également. P>
J'avais ce problème sur des fenêtres en raison des différents formats de chemins de Cygwin, mon shell préféré Windows, et qui utilise des chemins de style pseudo unix plutôt que des fenêtres. Si vous rencontrez ce problème et que vous avez des cygwins flottant dans votre chemin, Eclipse pourrait l'utiliser. Changer les chemins dans les propriétés> C Général> Les chemins et les symboles pour être style Cygwin plutôt que le style Windows (/ Cygwin / C / Android ... plutôt que c: \ Android ...) ... Quoi qu'il en soit, cela a travaillé pour moi . P>