Android NDK - 命名空间 'function' 中没有名为 'std' 的类型

标签 android c++ android-ndk cocos2d-x

使用 Cocos-2dx 和 Clang 构建时,我在 Android NDK 中不断收到以下错误

jni/../../Classes/Facebook/FacebookConstants.h:44:14: error: no type named 'function' in namespace 'std'
typedef std::function<void()> FacebookLoginCallback;

TApplication.mk

NDK_TOOLCHAIN_VERSION := clang
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1

Android.mk

LOCAL_CFLAGS :=-D__GXX_EXPERIMENTAL_CXX0X__
LOCAL_CPPFLAGS  := -std=c++11
LOCAL_CFLAGS += -std=gnu++11
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := game_shared

LOCAL_MODULE_FILENAME := libgame

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/Facebook/Request.cpp \
                   ../../Classes/FriendListCell.cpp \
                   ../../Classes/Game.cpp \
                   ../../Classes/GameListCell.cpp \
                   ../../Classes/GameListHeaderCell.cpp \
                   ../../Classes/GameScene.cpp \
                   ../../Classes/LoginScene.cpp \
                   ../../Classes/MenuScene.cpp \
                   ../../Classes/NewGameScene.cpp \
                   ../../Classes/Parse/curl/docs/examples/asiohiper.cpp \
                   ../../Classes/Parse/curl/docs/examples/htmltitle.cpp \
                   ../../Classes/Parse/HTTP.cpp \
                   ../../Classes/Parse/lib_json/json_reader.cpp \
                   ../../Classes/Parse/lib_json/json_value.cpp \
                   ../../Classes/Parse/lib_json/json_writer.cpp \
                   ../../Classes/Parse/ParseHTTP.cpp \

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes \
                      $(LOCAL_PATH)/../../Classes/Parse \
                      $(LOCAL_PATH)/../../Classes/Parse/json \
                      $(LOCAL_PATH)/../../Classes/Parse/lib_json \
                      $(LOCAL_PATH)/../../Classes/Facebook \

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions)

最佳答案

我认为您没有链接器错误。你有一个编译器错误。问题是,您的应用程序中没有提到对 C++11 的支持。您必须通过在 Application.mk 中指定 -std=c++11 编译器标志 (APP_CPPFLAGS) 来使用 Clang 附带的编译器标志文件位于您的 jni 文件夹中。即

APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -std=c++11

关于Android NDK - 命名空间 'function' 中没有名为 'std' 的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19292687/

相关文章:

android - 评级栏不工作

android - 如何从第 3/4/5 fragment 返回到根 fragment ?

android - 如何使用扬声器检测闹钟铃声或其他应用程序?

c++ - 如何使用 Direct3D 和 C++ 制作正方形?

android - 检测android native 代码中的内存泄漏

android - 折线不可见 Android Maps Api v2

c++ - 从 2D 图像堆栈渲染 3D 体积

c++ - 段错误进程 ID 和核心转储进程 ID 不同。为什么?

java - 未找到 id 'com.android.application' 的问题

android - Qt 造物主 : arm-linux-androideabi-g++: not found