2011-07-11 22 views
2

我米試圖建立與其中我使用skiastl模板機器人-Froyo的源的應用程序,機器人外部/ STLport的包括在Android.mk籌建不全成

我已經包括

MY_INCLUDES=external/zlib external/jpeg external/freetype/include \ 
    frameworks/base/core/jni/android/graphics external/skia/include/core \ 
    external/libpng external/expat/lib <b>external/stlport/stlport</b> 

libstlport_cflags := -D_GNU_SOURCE 
libstlport_cppflags := -fuse-cxa-atexit 

LOCAL_CPPFLAGS := $(libstlport_cppflags) 
include $(BUILD_STATIC_LIBRARY) 

我收到以下錯誤,當我嘗試建立與此應用程序的android源碼,這是我保持在封裝/應用:

external/stlport/stlport/stl/_new.h:47:50: error: libstdc++/include/new: No such file or directory

請指引我糾正 這個問題。

感謝

莫希特

+0

我嘗試添加LOCAL_STATIC_LIBRARY:= libstlport,但它甚至沒有包含stl文件 – mohit

+0

我冒昧地重新格式化您的帖子。 StackOverflow(SO)使用令人敬畏的'Markdown'庫進行後期標記。這真的值得研究:)哦......並歡迎來到SO! ;) – exhuma

回答

1
cpp 
#include <stdio.h> 
// The code 
// The set of definitions and includes for STLPort 
// They used defined() instead of #ifdef. 
#define _STLP_HAS_INCLUDE_NEXT 1 
#define _STLP_USE_MALLOC 1 
#define _STLP_USE_NO_IOSTREAMS 1 
#include <stl/config/_android.h> 
#include <map> 
#include <string> 

int main(void) 
{ 
    std::string a = "abc"; 
    printf("%s",a.c_str()); 
    return 0; 
} 

Android.mk 
# A simple test for the minimal standard C++ library 
# 
LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_SRC_FILES := test-libstl.cpp 
LOCAL_C_INCLUDES += sources/cxx-stl/stlport/stlport 
LOCAL_SHARED_LIBRARIES += libstlport 
LOCAL_MODULE := test-libstl 
include $(BUILD_EXECUTABLE) 
+0

嗨朋友,我正在編譯Android 4.0,在這期間我得到一個錯誤:「external/stlport/stlport/stl/_iterator_base.h:116:43:錯誤:libstdC++/include/iterator:沒有這樣的文件或目錄 」。任何人都有這個想法。 – CoDe

7

據我瞭解這不能由預處理位於bionic文件夾中找到該文件。

我有同樣的問題,我解決它通過添加以下行:

LOCAL_C_INCLUDES += bionic 
+2

這就是答案。仿生包含Android風格的標準庫。 –

+0

工作就像一個魅力! –

3

我還沒有與Android 2.2試過,但我使用Android的奇巧(4.4)。

要獲得stlport庫與我們的項目合作,我們包括它我們項目的Android.mk像這樣:

include external/stlport/libstlport.mk 

這是假設的升級Froyo,有一個libstlport.mk文件,包括在你的構建過程中。在4.4中,還有一個Android.mk文件,但它也構建了其他代碼,並將其構建爲靜態庫(這不是我們想要的)。

您可能還需要添加include目錄,例如:external/stlport/stlport

+0

'include external/stlport/libstlport.mk'也支持Android 4.2.2,但我也需要添加'LOCAL_SHARED_LIBRARIES + = libstlport'。 – pevik