我正在尝试使用android-froyo源构建一个应用程序,其中我使用skia
和stl
模板,
我已经包含了
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:错误:libstdc ++ / include / new:没有这样的文件或目录
请指导我纠正这个问题。
由于
莫希特
答案 0 :(得分:7)
据我所知,预处理器无法找到的文件位于bionic
文件夹中。
我遇到了同样的问题,我通过添加以下内容解决了这个问题:
LOCAL_C_INCLUDES += bionic
答案 1 :(得分:3)
我没有尝试使用Android 2.2,但我使用的是Android Kitkat(4.4)。
要让stlport
库与我们的项目合作,我们将其包含在 我们项目的Android.mk
中,如下所示:
include external/stlport/libstlport.mk
这假设在Froyo上有一个libstlport.mk文件要包含在您的构建过程中。在4.4中,还有一个Android.mk文件,但它也构建了其他代码,并将stlport构建为静态库(这不是我们想要的)。
您可能还需要添加include目录,例如:external/stlport/stlport
。
答案 2 :(得分: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)