36 votes

Android ndk-build iostream : Aucun fichier ou répertoire de ce type

Je rencontre un problème lors de la compilation d'un fichier .cpp à l'aide de l'outil ndk-build (Windows 7 avec Cygwin).

L'erreur apparaît lorsque j'essaie de compiler le fichier .cpp avec #include :

jni/native.cpp:5:20: error: iostream: No such file or directory

Voici mon .cpp fichier :

#include <jni.h>
#include <string.h>
#include <stdio.h>
#include <android/log.h>
#include <iostream>

#define DEBUG_TAG "NDK_SampleActivity"
#define  LOG_TAG    "hellojni"
#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)

#ifdef __cplusplus
extern "C" {
#endif

void Java_com_test_ndk_SampleActivity_helloLog(JNIEnv* env, jobject thisobj, jstring logThis)
{
    jboolean isCopy;

    const char * szLogThis = env->GetStringUTFChars(logThis, &isCopy);

    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [%s]", szLogThis);

    env->ReleaseStringUTFChars(logThis, szLogThis);
}

#ifdef __cplusplus
}
#endif

Et voici mon Android.mk fichier :

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

APP_STL:=stlport_static

LOCAL_LDLIBS := -llog

LOCAL_MODULE    := swingbyte-android

LOCAL_SRC_FILES := native.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/include-all
include $(BUILD_SHARED_LIBRARY)

J'ai un fichier iostream dans le dossier Android NDK (*NDK_ROOT \sources\cxx -stl \gnu -libstdc++ \include *), mais je n'ai aucune idée de comment dire au compilateur de chercher iostream (et d'autres fichiers d'en-tête standard) dans ce dossier.

Il semble qu'il me manque une ou plusieurs variables d'environnement, ou certains drapeaux du compilateur.

0voto

nevillmo Points 1

Merci à iwtu, je cherche la solution dans Android BSP comme vous l'avez fait. Cependant, il pourrait être affiné comme suit :

LOCAL_STATIC_LIBRARIES +=  libstlport_static

Puisque vous en utilisez un statique :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X