2011-01-07 79 views
0

我正在将本机库移植到NDK应用程序。在Android NDK上使用stl_tree.h导致“没有这样的文件或目录”

当我尝试使用stl_tree.h #include时,出现以下错误。

error: stl_tree.h: No such file or directory 

这是我的Android.mk文件。

LOCAL_PATH := $(call my-dir) 
MY_PATH := $(LOCAL_PATH) 
include $(call all-subdir-makefiles) 
LOCAL_PATH := $(MY_PATH) 
include $(CLEAR_VARS) 
LOCAL_LDLIBS := -llog -la -lb -lc -lstdc++ -lgcC#I try to explicit declare the stdc++ and gcc but still doesn't works. 
LOCAL_MODULE := rmsdk 
LOCAL_SRC_FILES := curlnetprovider.cpp RMServices.cpp 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include-all \ 
$(LOCAL_PATH)/include-all/openssl 
LOCAL_STATIC_LIBRARIES := adept cryptopenssl curl dp expat fonts hobbes jpeg mschema png t3 xml zlib 

include $(BUILD_SHARED_LIBRARY) 

这是我Application.mk

APP_MODULES := adept cryptopenssl curl dp expat fonts hobbes jpeg mschema png t3 xml zlib rmsdk 
APP_STL := stlport_static 

我实际的问题是,当编译我得到一个:“_Rb_tree_increment”不是“性病” 的成员,这就是为什么我尝试包括我自己的stl_tree。看来这个lib不包括在内。

回答

0

我解决它使用的STLport从NDK 5

1

我只能说C++,而不是android,但你为什么试图直接包含stl_tree.h?您应该包含<map><set>以获取您要使用的实际容器。无论如何,在g ++ stl_tree.h只是mapset所使用的私有实现。

+0

其实,我只是想了解为什么我的应用程序编译。问题出在_Rb_tree_increment中,我在stl_tree.h文件中找到它,这就是为什么我要包含它。但是,即使编译“'_Rb_tree_increment'不是'std'”的成员,这个函数也会出错。 TY。 – 2011-01-07 15:28:02

0

而Android NDK没有STL(或至少,它没有我最后一次看了看SDK,这是在升级Froyo) 。

它没有STL的原因在于,默认情况下,所有内容都会在禁用例外的情况下编译。所以在使用第三方STL端口时要非常小心;有一个很好的机会,如果出现任何问题,它就会崩溃。

+0

NDK5提供stlport和gnustl_static。 – 2011-03-02 14:41:16

相关问题