Einrichten von C ++ 11 (std :: thread) für NDK mit ADT / Eclipse

Ich habe versucht, C ++ 11 zu benutzen. Ich entwickle ein Android-Projekt und ich möchte std :: mutex verwenden. Zusammen mit OpenCV Aber egal was ich tue, ich kann einfach nicht scheinen, den Type 'mutex' could not be resolved zu beheben Type 'mutex' could not be resolved Fehler.

Ich habe versucht, den Tutorials zu folgen, die ich auf SO und anderen Orten gefunden habe. LINK1 LINK2 LINK3 LINK4

  • BroadcastReciever Lebenszyklus - Statische Variablen
  • Was bedeutet das RC_SIGN_IN bedeutet in googleplus Login
  • App-UI-Operationen (Einstellung Alpha, Einstellungsränder, etc.) sehr langsam auf 4.4.4 im Vergleich zu 4.0.3
  • Android Google Places API, getAutocompletePredictions gibt den Status 'PLACES_API_ACCESS_NOT_CONFIGURED' zurück
  • Erfrischung einer Ansicht in einem Fragment
  • Android "Roboto Light" pixelation
    1. ADT v22.3.0-887826
    2. Installierte C / C ++ – Compiler (CDT)

    Nach so vielen Tutorials ist es ein echtes Chaos geworden. Also werde ich meine aktuellen Einstellungen erklären

    • Projekt> Eigenschaften> C / C ++ Build> Tool Chain Editor
      • Aktuelle Werkzeugkette ist "Cross GCC"
      • Aktueller Builder ist "Android Builder"
    • Projekt> Eigenschaften> C / C ++ Build> Ermittlungsoptionen

      • Compiler-Aufrufbefehl ist "gcc"
      • Compilter Invocation-Argumente sind -E -P -v -dD "$ {plugin_state_location} /specs.c -std = c ++ 11"
    • Projekt> C / C ++ Allgemein> Pfade und Symbole> # Symbole Registerkarte

      • Symbol = __cplusplus und Wert = 1

    In meiner Application.mk-Datei habe ich folgendes

     APP_STL := gnustl_static APP_USE_CPP0X := true APP_CPPFLAGS := -std=c++11 -frtti -fexceptions APP_ABI := armeabi-v7a APP_PLATFORM := android-8 

    Ich habe versucht, den Wert des cplusplus-Symbols auf 201103L zu ändern und __GXX_EXPERIMENTAL_CXX0X mit einem leeren Wert zu versuchen

    Aber nichts scheint zu funktionieren, was mache ich falsch?

    Jede Hilfe wird geschätzt!

  • Android (3.0) Action Bar möchte nicht gehen
  • Android konvertiert Datum und Uhrzeit in Millisekunden
  • Ist es möglich, den internen DB auf die SDCard zu verschieben?
  • MD5 Prüfsummen von Android APK Dateien unterscheiden sich. Warum?
  • Sicherung der Kommunikation mit mobiler App?
  • Kompilieren von Android Apps auf einem tatsächlichen Telefon
  • 3 Solutions collect form web for “Einrichten von C ++ 11 (std :: thread) für NDK mit ADT / Eclipse”

    Unterstützung für std::thread ist ein bisschen etwas Besonderes. Das Thema wird zum Beispiel in diesem Artikel von Binglong angesprochen . Der Artikel ist wirklich kurz, aber es kann in einem Satz zusammengefasst werden:

    Sie können die (Standard) gcc 4.6 Toolchain nicht verwenden, wenn Sie #include <thread> oder #include <mutex> eingeben möchten.

    Also füge bitte NDK_TOOLCHAIN_VERSION=4.8 oder NDK_TOOLCHAIN_VERSION=clang zu dein Application.mk .

    Für ADT, um seinen Index korrekt wiederherzustellen , siehe Android NDK-Build, Methode konnte nicht aufgelöst werden oder Eclipse kompiliert erfolgreich, gibt aber immer noch semantische Fehler .

    In Android.mk addiere LOCAL_CPPFLAGS := -std=c++11 -D __cplusplus=201103L dann dein Projekt neu aufbauen (für den Rekonfigurieren des Compilers). Nach dem Wiederaufbau fügt Ihr Projekt automatisch den erforderlichen Pfad in Pfad und Symbole hinzu

    Wenn du das NDK aufrümpst oder eine neue Version von Android Studio (2.1 zum Zeitpunkt des Schreibens) installierst und Android Studio das NDK für dich herunterladen kannst, bekommst du Revision 12 – das hat eine Menge Std :: definiert nicht in \ ndk definiert -bundle \ sources \ cxx-stl \ gnu-libstdc ++ \ 4.9 \ libs \ armeabi-v7a \ include \ bits \ c ++ config.h – diejenigen, die für das Threading relevant sind, wie _GLIBCXX_HAS_GTHREADS, die die Thread-Klasse in "Thread" für versteckt Beispiel.

    Es sagt, dass nach Revision 10e das gcc veraltet ist. Und mit all diesen Definitionen wie erwähnt – die gründlich unsere Thread-abhängigen JNI-Code gepeitscht.

    Clang, wie in anderen Beiträgen vorgeschlagen, ist keine Lösung für uns, da es unter anderem scheint, dasad_local zum Beispiel nicht zu unterstützen. Die Lösung ist, wieder auf Revision 10e zurückzukehren – was finden Sie unter:

    Dl.google.com/android/ndk

    Entpacken Sie das Paket und kopieren Sie es in das Verzeichnis sdk / ndk-bundle – stellen Sie sicher, dass Sie zuerst die ursprüngliche Revision 12 löschen.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.