I have been trying to use C++11. I am developing an android project and i want to use std::mutex. Along with OpenCV
But no matter what I do, I just cant seem to fix the Type 'mutex' could not be resolved
error.
I have tried following the tutorials i found on SO and other places. LINK1 LINK2 LINK3LINK4
Following so many tutorials, it has become a real mess now. So I will explain my current settings
Project > Properties > C/C++ Build > Discovery Options
Project > C/C++ General > Paths and Symbols > # Symbols tab
In my Application.mk file I have the following
APP_STL := gnustl_static
APP_USE_CPP0X := true
APP_CPPFLAGS := -std=c++11 -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-8
I tried to change the cplusplus symbol's value to 201103L and tried __GXX_EXPERIMENTAL_CXX0X with an empty value
But nothing seems to work, What am I doing wrong??
Any help is appreciated!
Support for std::thread
is a bit special. The issue is addressed, for example, in this article by Binglong. The article is really short, but it can be summarized in one sentence:
You cannot use the (default) gcc 4.6 toolchain if you want to
#include <thread>
or#include <mutex>
.
So, please add NDK_TOOLCHAIN_VERSION=4.8
or NDK_TOOLCHAIN_VERSION=clang
to your Application.mk
.
For ADT to rebuild its Index correctly, see Android NDK build, Method could not be resolved or Eclipse compiles successfully but still gives semantic errors.
In Android.mk add LOCAL_CPPFLAGS := -std=c++11 -D __cplusplus=201103L
then rebuild your project (for reconfiguring compiler). After rebuilding, your project automatically adds needed stl path into Path and Symbols
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With