2012-02-03 19 views
32

Mam problem z kompilacji plik cpp przyrządem NDK-build (Windows 7 z Cygwin) Pojawia błąd, gdy próbuję skompilować plik cpp z #include:Android NDK-build iostream: Nie ma takiego pliku lub katalogu

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

Oto mój plik cpp:

#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 

I tu jest moje Android.mk file:

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) 

Mam plik Iostream w folderze android ndk (NDK_ROOT \ sources \ cxx-stl \ gnu-libstdC++ \ include), ale nie mam pojęcia, jak powiedzieć kompilatorowi, aby szukał iotream (i innych standardowych plików nagłówkowych) w tym folderze .

Wydaje się, że brakuje jednej lub kilku zmiennych środowiskowych lub niektórych flag comler.

Odpowiedz

61

Myślę, że "APP_STL: = stlport_static" musi znajdować się w pliku Application.mk.

Utwórz plik "Application.mk" i wpisz w nim "APP_STL: = stlport_static".

+0

Mam tę linię w Android.mk, widać to w moim poście. –

+7

Powinieneś umieścić tę linię w pliku APPLICATION.mk, a nie ANDROID.mk –

+2

Tak! APPLICATION.mk pełni inną rolę niż ANDROID.mk i musi być utworzony w katalogu głównym jni (-> project_dir/jni/Application.mk). (dzięki Martins) – Gaetan

0

Zaktualizuj swój Android NTK do najnowszego. Wystąpił błąd w systemie Android ndk ver 5

+1

Używam ndk w Androidzie Studio 2.1.1. Nadal pojawia się ten sam błąd. –

2

To działa dla mnie.

LOCAL_STATIC_LIBRARIES += libstlport 

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

również nie działa –

+0

Co to jest "bioniczny" dla? –

1

Dodajesz

APP_PLATFORM := android-23 

Albo cokolwiek rewizja użyjesz rozwiązać go dla mnie.

Powiązane problemy