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.
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. –
Bạn nên đặt dòng đó trong tệp APPLICATION.mk, không phải là ANDROID.mk –
Đú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