android external / stlport включить в сборку Android.mk не удалось - PullRequest
2 голосов
/ 11 июля 2011

Я пытаюсь создать приложение с источником 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: Нет такого файла или каталога

Пожалуйста, помогите мне исправить эту проблему.

Спасибо

Мохит

Ответы [ 3 ]

7 голосов
/ 25 января 2013

Как я понимаю, файл, который не может быть найден препроцессором, находится в папке bionic.

У меня возникла та же проблема, и я решил ее, добавив следующую строку:

LOCAL_C_INCLUDES += bionic
3 голосов
/ 19 сентября 2014

Я не пробовал это с 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.

1 голос
/ 03 ноября 2011
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)
...