2012-02-03 5 views
32

У меня проблема с компиляции файла CPP с использованием NDK-сборки инструмента (Windows 7 с Cygwin) появляется Ошибка при попытке компиляции файла CPP с #include:Android NDK iostream-сборки: Нет такого файла или каталога

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

Вот мой каст файл:

#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 

А вот мой Android.mk файл:

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) 

У меня есть файл iostream в папке android ndk (NDK_ROOT \ sources \ cxx-stl \ gnu-libstdC++ \ include), но я не знаю, как сообщить компилятору искать iotream (и другие стандартные файлы заголовков) в этой папке ,

Кажется, что мне не хватает одной или нескольких переменных окружения или некоторых флагов компилятора.

ответ

61

Я думаю, что «APP_STL: = stlport_static» должен быть в файле Application.mk.

Создайте файл «Application.mk» и напишите в нем «APP_STL: = stlport_static».

+0

Я получил эту строку в Android.mk, вы можете видеть это в моем посте. –

+7

Вы должны поместить эту строку в файл APPLICATION.mk, а не ANDROID.mk –

+2

Да! APPLICATION.mk имеет другую роль, чем ANDROID.mk, и он должен быть создан в корне jni (-> projet_dir/jni/Application.mk). (спасибо Martins) – Gaetan

0

Обновите свой андроид ndk до последней версии. Я столкнулся с ошибкой в ​​android ndk ver 5

+1

Я использую ndk в Android Studio 2.1.1. По-прежнему получается такая же ошибка. –

2

Это работает для меня.

LOCAL_STATIC_LIBRARIES += libstlport 

LOCAL_C_INCLUDES += external/stlport/stlport 
LOCAL_C_INCLUDES += bionic 
+0

также не работает –

+0

Что такое 'bionic' for ?? –

1

Добавление

APP_PLATFORM := android-23 

Или какой-то ревизии использовать ее решили для меня.

Смежные вопросы