Android ndk-build iostream:没有这样的文件或目录
我在使用 ndk-build 工具(带有 Cygwin 的 Windows 7)编译 .cpp 文件时遇到问题。
当我尝试使用 #include 编译 .cpp 文件时出现错误:
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 文件,但我不知道如何告诉编译器查找 iostream (和其他标准头文件)在该文件夹中。
我似乎缺少一个或几个环境变量,或者一些编译器标志。
I'm having a problem with compiling a .cpp file using the ndk-build tool (Windows 7 with Cygwin).
The error appears when I try to compile the .cpp file with #include:
jni/native.cpp:5:20: error: iostream: No such file or directory
Here is my .cpp file:
#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
And here is my 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)
I have iostream file in the Android NDK folder (*NDK_ROOT\sources\cxx-stl\gnu-libstdc++\include*), but I don't have any idea how to tell compiler to look for iostream (and other standard header files) in that folder.
It seems to that I'm missing one or few environment variables, or some compiler flags.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我认为“APP_STL:= stlport_static”必须位于Application.mk文件中。
创建一个“Application.mk”文件并在其中写入“APP_STL:=stlport_static”。
I think "APP_STL:=stlport_static" must be in Application.mk file.
Create a "Application.mk" file and write "APP_STL:=stlport_static" in it.
这对我有用。
This works for me.
添加
或您使用的任何修订版本都为我解决了这个问题。
Adding
Or whatever revision you use solved it for me.
将您的 Android NDK 更新到最新版本。
我在 Android NDK 版本 5 中遇到了错误。
Update your Android NDK to the latest one.
I faced the error in Android NDK version 5.
我刚刚花了几天时间将 NDK 从 r10e 更新到 r20,并且有几个变量发生了变化。
对于 NDK r10e
文件 Android.mk:
文件 Application.mk:
对于 NDK r20
文件 Android.mk: mk:
文件Application.mk:
和我的main.cpp文件(包括我的bin_node.h文件):
运行 ndk-build 并构建可执行文件
有关更多源代码和信息,请查看 我的GitHub。
I just spent days to update my NDK from r10e to r20, and there're several variables that are changed.
For NDK r10e
File Android.mk:
File Application.mk:
For NDK r20
File Android.mk:
File Application.mk:
And my main.cpp file (including my bin_node.h file):
Run ndk-build and build an executable file
For more source code and information for this, check my GitHub.