2012-02-03 89 views
32
我在使用编译CPP文件NDK的构建工具(Windows 7中使用Cygwin)问题出现 错误,当我尝试编译CPP文件用#include

的Android NDK建造的iostream:没有这样的文件或目录

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

这里是我的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 

这里是我的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) 

我在android ndk文件夹(NDK_ROOT \ sources \ cxx-stl \ gnu-libstdC++ \ include)中有iostream文件,但我不知道如何告诉编译器在该文件夹中查找iotream(和其他标准头文件) 。

看来我缺少一个或几个环境变量或一些comiler标志。

回答

61

我认为“APP_STL:= stlport_static”必须在Application.mk文件中。

创建一个“Application.mk”文件并在其中写入“APP_STL:= stlport_static”。

+0

我在Android.mk中得到了这一行,你可以在我的文章中看到。 – 2012-02-03 14:57:47

+7

你应该把该行放在APPLICATION.mk文件中,而不是ANDROID.mk – 2012-02-03 18:16:25

+2

是的! APPLICATION.mk的作用与ANDROID.mk不同,它必须以jni的根目录( - > projet_dir/jni/Application.mk)创建。 (感谢马丁斯) – Gaetan 2012-02-03 22:05:55

0

更新您的android ndk到最新的。 我面临的错误在Android ndk版本5

+1

我在Android Studio 2.1.1中使用了ndk。仍然得到相同的错误。 – 2016-05-11 19:45:39

2

这适用于我。

LOCAL_STATIC_LIBRARIES += libstlport 

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

也不起作用 – 2015-11-05 14:25:33

+0

什么是“仿生”? – 2016-05-11 19:45:06

1

加入

APP_PLATFORM := android-23 

或者任何修订您使用解决了这个问题对我来说。

相关问题