2013-03-07 9 views
15

Używam Androida NDK r8d i Zaćmienie Juno. Próbuję skompilować kod w języku C++, który używa elementów C++ 11, takich jak mutex, lock_guard, shared_ptr itp. W natywnym projekcie android w środowisku Zaćmienie.Jak skompilować kod C++ 11 z Androidem ndk i eclipse?

otrzymuję błędy takie jak:

"error: 'shared_ptr' is not a member of 'std'"

"fatal error: mutex: No such file or directory"

natknąłem się na podobne pytanie here. Wydaje się, że działa dla nich, ale wyjaśnienie nie jest kompletne, więc nie mogę go dla mnie uruchomić.

Dodałem "NDK_TOOLCHAIN_VERSION=4.7" do pliku Application.mk i "LOCAL_CFLAGS += -std=c++11" do Android.mk. Nadal jednak się nie kompiluje.

W linku powyżej jest napisane:

"Be sure that the standard library include path (like /android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include) is in the target settings."

Jak i gdzie mogę je wstawić?

Otrzymuję również błędy w IDE Eclipse (na źródło, przed kompilacją). Wiem, że powinienem zdefiniować "__GXX_EXPERIMENTAL_CXX0X__", aby je rozwiązać, ale po prostu nie wiem, gdzie to umieścić.

Tak więc, jeśli ktoś mógłby zamieścić odpowiedź z pełnym wyjaśnieniem, jak skompilować i sprawić, że eclipse działa z C++ 11, byłoby świetnie.

+0

Przeczytaj dokument NDK, jest to niemożliwe. – Geoffroy

+0

http://stackoverflow.com/questions/14532057/smart-pointers-not-working-with-android-ndk-r8 wydaje się, że udało im się to – DeathlessHorsie

+0

, którego kompilatora używasz do C++? – naxchange

Odpowiedz

6

Odnośnie pierwszego pytania:

  1. Go do projektu> Właściwości> C/C++ Ogólne/Ścieżki i symbole

  2. W "obejmuje" zakładka dodaj odpowiedniego katalogu, np /android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include

Odnośnie drugiego pytania, ja również poszukuje odpowiedzi. Nie jest jasne, jak zdefiniować makro w Eclipse.

Niektórzy mówią, że powinno być „dodał jak predefiniowane makra do indekser”, ale wygląda na to, że oboje nie mogli znaleźć drogę do wdrożenia, że ​​...

Czytałem gdzie indziej, że powinien on być dodano do "C/C++ Ogólne/Ścieżki i symbole/Symbole/GNU C++", ale nie mogę znaleźć części "Symbole/GNU C++" w mojej wersji Indigo.

+0

Używam Zaćmienie Juno i ja również nie mam części "Symbole/GNU C++" i bez definiowania "__GXX_EXPERIMENTAL_CXX0X__" indeks nie rozpozna rzeczy w C++ 11. Czy udało ci się skompilować swój kod za pomocą narzędzia ndk? – DeathlessHorsie

+0

Tak, kod (C++ 11) kompiluje się dobrze z NDK. Problem występuje tylko na poziomie indeksowania w środowisku Eclipse. –

+2

Aby rozwiązać problem z instalacją indeksu w Eclipse Juno, zamieściłem hack na stronie "http://stackoverflow.com/questions/9375708/eclipse-indexer-errors-when-using-stl-withandand-ndk"/15782177 # 15782177 " –

0

Wyszukuję wyeksportować zmienną środowiskową NDK_TOOLCHAIN_VERSION = 4.8, zanim zacznę korzystać z zaćmienia.

Eclipse używa domyślnej wersji toolchain ndk w wersji 4.6, jeśli NDK_TOOLCHAIN_VERSION nie jest zdefiniowana, a gcc z tą wersją nie obsługuje wszystkich przyszłych wersji C++ 11, takich jak multithread i tak dalej.

Powiązane problemy