Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android ndk和eclipse给出了关于c+的不同错误信息+;getline()函数 我在Android JNI下有一些C++代码,当我使用NDK构建在命令行下时,它可以生成.LIbFILE,但是当我的项目运行为Android应用程序时,Eclipse会警告GETLIN()函数的一些错误,它告诉我必须首先修复错误。所以我很困惑_Android_C++_Eclipse_C++11_Android Ndk - Fatal编程技术网

android ndk和eclipse给出了关于c+的不同错误信息+;getline()函数 我在Android JNI下有一些C++代码,当我使用NDK构建在命令行下时,它可以生成.LIbFILE,但是当我的项目运行为Android应用程序时,Eclipse会警告GETLIN()函数的一些错误,它告诉我必须首先修复错误。所以我很困惑

android ndk和eclipse给出了关于c+的不同错误信息+;getline()函数 我在Android JNI下有一些C++代码,当我使用NDK构建在命令行下时,它可以生成.LIbFILE,但是当我的项目运行为Android应用程序时,Eclipse会警告GETLIN()函数的一些错误,它告诉我必须首先修复错误。所以我很困惑,android,c++,eclipse,c++11,android-ndk,Android,C++,Eclipse,C++11,Android Ndk,此处使用my getline()函数: extern "C" JNIEXPORT int JNICALL Java_com_android_mymapsforge_create(JNIEnv *env, jobject obj) { ifstream infile("C:\\Users\\li\\Documents\\Visual Studio 2010\\Projects\\importANN\\Debug\\nodes.csv"); string line; int

此处使用my getline()函数:

extern "C" JNIEXPORT int JNICALL Java_com_android_mymapsforge_create(JNIEnv *env, jobject obj)
{
    ifstream infile("C:\\Users\\li\\Documents\\Visual Studio 2010\\Projects\\importANN\\Debug\\nodes.csv");
    string line;
    int index = 0;

   while( getline( infile, line ))
   {
         ...
   }
}
给定的getline()信息是: 无效参数' 候选人包括: std::basic\u istream和getline(std::basic\u istream&,std::basic\u string&) std::basic_istream&getline(std::basic_istream&,std::basic_string&,0)

但是实际上,Android NDK已经成功地构建了C++代码: 请参阅控制台信息:

Build of configuration Default for project MyMapsforge
C:\TDDOWNLOAD\adt-bundle-windows-x86_64-20130729\ndk\android-ndk-r9\ndk-build.cmd all 
Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml    
Install        : libann.so => libs/armeabi/libann.so
Install        : libann.so => libs/armeabi-v7a/libann.so

**** Build Finished ****
y粘贴这个函数在我的ANDROID.MK C++文件

中是一致的。 请参阅我的android.mk文件:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../ 

LOCAL_MODULE    := libann
LOCAL_LDLIBS    := -llog

NDK_TOOLCHAIN_VERSION := clang
LOCAL_CPPFLAGS += -std=c++11

LOCAL_SRC_FILES := \
    ANN.cpp \
    bd_pr_search.cpp \
    bd_tree.cpp \
    kd_pr_search.cpp \
    kd_split.cpp \
    kd_util.cpp \
    bd_fix_rad_search.cpp \
    bd_search.cpp \
    brute.cpp \
    kd_fix_rad_search.cpp \
    kd_search.cpp \
    kd_tree.cpp \
    kd_dump.cpp \
    perf.cpp\
    sample.cpp

include $(BUILD_SHARED_LIBRARY)
sample.cpp包含我使用getline()函数粘贴的函数。所以我很困惑,如何解决这个问题


Eclipse提醒它包含错误,因此我无法运行该项目

当您遇到来自Eclipse的这些错误消息时,只需转到“Problems”视图并删除这些消息。清除生成项目,消息将不会再次出现。请注意,
NDK\u工具链版本应在Application.mk中指定。另外请注意,您必须为项目指定
APP\u STL
,此设置也会进入Application.mk

有关解释,请参见NDK。但是,长话短说,您有以下选择(使用NDK r9b):

以下选项不包括
std::ifstream

APP_STL := gabi++_static
APP_STL := gabi++_shared
APP_STL := system

请注意,libc++\uu在NDK r9之前是不可用的,并且到今天为止没有很好的文档记录。

通常我会说,您真正需要满足的是实际的NDK gcc,而不是Eclipse(如果您不想将其指向支持文件,可以简单地关闭Eclipse检查)。然而,您试图通过windows路径引用开发机器上的文件(标签显示的是android ndk代码)是极其错误的-该文件将无法访问,因为该程序将不会在windows box上运行,而是在真实或模拟的android设备上运行,无法访问C:。所以现在应该关注的不是错误信息,而是整个想法。我明白你的意思了。您建议我关闭eclispe检查代码。另一件事是,您注意到我的代码是错误的,我知道,我还没有纠正它,我将把导出函数中的文件路径作为jstring对象传递,然后执行一些操作。谢谢你的建议。@Chris Stratton:除了Application.mk被调整为clang而不是gcc之外。
APP_STL := gabi++_static
APP_STL := gabi++_shared
APP_STL := system