2011-01-07 20 views
0

私はネイティブライブラリをNDKアプリケーションに移植します。Android NDKでstl_tree.hを使用すると「No such file or directory」と表示されます

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は」私がしようとする理由です「STD」 のメンバーではありません私自身stl_treeを含めてください。このlibは含まれていないようです。

答えて

0

私はNDK 5からのSTLportを使用して、それを解決し

1

私はC++でしか話せません。アンドロイドではありませんが、なぜstl_tree.hを直接取り込もうとしていますか?使用する実際のコンテナを取得するには、<map>または<set>を含める必要があります。 g ++では、とにかくstl_tree.hは、mapsetによって使用される単なる実装です。

+0

実際、私は自分のアプリケーションがコンパイルされている理由を見つけようとしています。問題は_Rb_tree_incrementにあり、stl_tree.hファイルで見つかったので、これを含めています。しかし、であっても、この関数はコンパイル時に '' _Rb_tree_increment 'が' std 'のメンバーではありません。 Ty。 –

0

のAndroid NDKが(あるいは、少なくとも、それはフローズンヨーグルトの上にいた私は、SDKを見て最後の時間、しませんでした)STLを持っていません。

STLを持たないのは、デフォルトですべてが例外を無効にしてコンパイルされるためです。したがって、サードパーティのSTLポートを使用する場合は非常に注意してください。何かがうまくいかなければ、ちょうどクラッシュするという良いチャンスがあります。

+0

NDK5はstlportとgnustl_staticを提供します。 –

関連する問題