[英]Android NDK - no type named 'function' in namespace 'std'
I keep getting the following error in the Android NDK when building with Cocos-2dx and Clang使用 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应用程序.mk
NDK_TOOLCHAIN_VERSION := clang
APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1
Android.mk安卓.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)
I think You don't have a linker error.我认为您没有链接器错误。 You have a compiler error.你有一个编译器错误。 The problem is, you dont have mention support of C++11 in your application.问题是,您的应用程序中没有提到对 C++11 的支持。 You have to use the one that comes with Clang by specifying the -std=c++11
compiler flag ( APP_CPPFLAGS
) in Application.mk
file which is in your jni
folder.您必须通过在jni
文件夹中的Application.mk
文件中指定-std=c++11
编译器标志( APP_CPPFLAGS
)来使用 Clang 附带的那个。 ie即
APP_CPPFLAGS := -frtti -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -DCOCOS2D_DEBUG=1 -std=c++11
Don't forget to include it in the header不要忘记将其包含在标题中
#include <functional>
In my project cocos2d-x v3.0.0, this is needed for the Android build but not for iOS.在我的项目 cocos2d-x v3.0.0 中,Android 版本需要它,但 iOS 不需要。 I guess it's included elsewhere.我想它包含在其他地方。
I have the same problem, and resloved it by doing:我有同样的问题,并通过执行以下操作来解决它:
In Android.mk file, add在Android.mk文件中,添加
LOCAL_CPP_EXTENSION += .h
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.