2012-02-03 8 views
32

Tôi gặp sự cố khi biên dịch tệp cpp bằng công cụ ndk-build (windows 7 với cygwin) Lỗi xuất hiện khi tôi cố gắng biên dịch tệp cpp với #include:Android ndk-build iostream: Không có tệp hoặc thư mục nào như vậy

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

đây là tập tin cpp của tôi:

#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 

Và đây là tập tin Android.mk tôi:

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) 

Tôi có tệp iostream trong thư mục ndk android (NDK_ROOT \ sources \ cxx-stl \ gnu-libstdC++ \ include) nhưng tôi không biết làm thế nào để trình biên dịch tìm kiếm iotream (và các tệp tiêu đề standart khác) trong thư mục đó .

Dường như tôi thiếu một hoặc vài biến môi trường hoặc một số cờ comiler.

Trả lời

61

Tôi nghĩ rằng "APP_STL: = stlport_static" phải nằm trong tệp Application.mk.

Tạo tệp "Application.mk" và viết "APP_STL: = stlport_static" trong đó.

+0

Tôi có dòng này trong Android.mk, bạn có thể thấy điều đó trong bài đăng của mình. –

+7

Bạn nên đặt dòng đó trong tệp APPLICATION.mk, không phải là ANDROID.mk –

+2

Đúng! APPLICATION.mk có vai trò khác với ANDROID.mk và nó phải được tạo tại gốc của jni (-> projet_dir/jni/Application.mk). (nhờ Martins) – Gaetan

0

Cập nhật Android ndk của bạn lên phiên bản mới nhất. Tôi gặp lỗi trong android ndk ver 5

+1

Tôi đang sử dụng ndk trong Android Studio 2.1.1. Vẫn nhận được cùng một lỗi. –

2

Điều này phù hợp với tôi.

LOCAL_STATIC_LIBRARIES += libstlport 

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

cũng không hoạt động –

+0

'bionic' là gì? –

1

thêm

APP_PLATFORM := android-23 

Hoặc bất cứ phiên bản bạn sử dụng giải quyết nó cho tôi.