Использование android-ndk-r9c, eclipse. У меня это в Application.mk:
APP_CPPFLAGS += -std=gnu++11
И это в Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := main
SDL_PATH := ../SDL
LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include
LOCAL_C_INCLUDES := $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.6/include
LOCAL_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
# Add your application source files here...
LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \
animation.cpp \
camera.cpp \
entities.cpp \
graphics.cpp \
input.cpp \
level.cpp \
physics.cpp \
tiles.cpp \
utils.cpp \
main.cpp \
LOCAL_SHARED_LIBRARIES := SDL2
LOCAL_LDLIBS := -lGLESv1_CM -llog
LOCAL_LDLIBS += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a'
include $(BUILD_SHARED_LIBRARY)
Я пробовал так много всего, но компилятор продолжает говорить: "... не имеет имени с именем" emplace ""
LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include
LOCAL_C_INCLUDES := $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.6/include
LOCAL_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include
LOCAL_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/include
LOCAL_C_INCLUDES += $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include
Ваша стандартная библиотека C++ (libstdC++
) - v4.6, которая слишком старая, чтобы обеспечить std::map::emplace
. Вам требуется GCC> = v4.8 и его библиотека, а также заменить вызовы emplace
эквивалентными вызовами для insert
-std=gnu++11
даже если он написан в Application.mkemplace
на эквивалентные вызовыinsert
. Googlestd::map::emplace
иstd::map::insert
чтобы понять, как это сделать.