【发布时间】:2013-11-16 17:36:35
【问题描述】:
我正在尝试使用 NDK r9b 编译一些 C++11 代码,但是无论我尝试什么它都不起作用。不使用 C++11 功能进行编译也可以正常工作。
这是我的 Application.mk:
NDK_TOOLCHAIN_VERSION := 4.8
APP_STL := gnustl_static
这是我的 Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
FILE_LIST := $(wildcard $(LOCAL_PATH)/*.cpp)
LOCAL_CPPFLAGS := -std=c++11 -pthread -frtti -fexceptions
LOCAL_MODULE := RAGEAndroid
LOCAL_SRC_FILES := jni.c $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_LDLIBS := -llog -lm -landroid -lGLESv3
include $(BUILD_SHARED_LIBRARY)
我也尝试过设置以下内容,但没有运气:
LOCAL_CFLAGS := -D__GXX_EXPERIMENTAL_CXX0X__
LOCAL_CPPFLAGS := -std=gnu++11 -pthread -frtti -fexceptions
我已确保 Eclipse 在 C++ general->Paths and Symbols 中具有以下路径
(ndk path)/sources/cxx-stl/gnu-libstdc++/4.8/include
(ndk path)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include
我有一个 C 文件 (jni.c) 和几个测试 cpp/hpp。在没有任何 C++11 功能的情况下,一切都可以正常编译,并且包括
我已经阅读了很多关于让 C++11 编译的主题,但似乎没有任何效果,我相信我错过了一些东西,但无法弄清楚它是什么。任何帮助将不胜感激!
编辑:如果我打印 __cplusplus,它会显示 201103L,所以看起来它使用的是正确的版本。
编辑 2:std::atomic 似乎工作正常。
【问题讨论】:
标签: android c++11 android-ndk