androidndk和eclipse给出了关于c++getline()函数的不同错误信息
android ndk and eclipse give different error info about a c++ getline() function
我在android JNI下有一些c++代码,当我在命令行下使用ndk构建时,它可以生成.so-libfile,但当我的项目作为android应用程序运行时,eclipse会提醒我关于getline()函数的一些错误,它告诉我必须首先修复错误。所以我很困惑。
我的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_istream<0,#1>&getline(std::basic_stream<#0,#1>&,std::basic_string<+0,#1,#2>&std::basic_istream<0,#1>&getline(std::basic_stream<#0,#1>&,std::basic_string<#0,#1,#2>�)
但事实上,android ndk已经成功构建了c++代码:查看控制台信息:
Build of configuration Default for project MyMapsforge
C:TDDOWNLOADadt-bundle-windows-x86_64-20130729ndkandroid-ndk-r9ndk-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_TOOLCHAIN_VERSION
应在Application.mk中指定。此外,您必须为您的项目指定APP_STL
,此设置也可在Application.mk中进行。
有关说明,请参见NDK CPLUPLUS-SUPPORT.html。但是,长话短说,你有以下选择(NDK r9b):
APP_STL := gnustl_static
APP_STL := gnustl_shared
APP_STL := stlport_static
APP_STL := stlport_shared
APP_STL := libc++_static
APP_STL := libc++_shared
以下选项不包括std::ifstream
:
APP_STL := gabi++_static
APP_STL := gabi++_shared
APP_STL := system
请注意,libc++_在NDK r9之前不可用,并且到目前为止还没有很好的文档记录。
- 如何修复函数中的 fstream 文件输入以将正确的信息存储在结构数组中?
- 如何获取有关在 Clang LibTooling 中调用析构函数的信息?
- 错误:调用'strcmp'没有匹配函数(尝试设置显示用户信息功能)
- 我的单例中的数组在离开函数后没有保留信息,然后在尝试再次访问信息时崩溃
- 使用一个回调函数从多个订阅者分配信息
- 类中的重载函数(Students())是输出输入的信息,但它不起作用
- 是否存在与 Eigen::Matrix<>constexpr 构造函数相关的信息?
- 如果构造函数从调用到 std::make_shared 崩溃,GDB 是否可以显示崩溃的详细信息
- 使用友元函数从多态类中检索类型信息
- Windows表单如何使用其他函数回调图表信息
- 如何在函数模板中隐式推导数组中元素的类型信息
- 函数从模板参数中获取字段值,而不是直接访问以允许对相同信息使用不同的名称
- 多映射插入键类型信息 std::make_pair vs std::p air 构造函数
- LDAP函数中是否有任何功能可以在不使用ldap_search的情况下获取用户信息
- 获取有关 ELF 中的函数和相关符号的信息
- 当所有信息都在头文件中时,未定义对函数的引用
- 将信息从运行函数发送到另一个
- 如何根据其ARITY(或编译时已知的其他信息)以不同的方式调用函数对象
- C 调用从TXT文件输出信息的函数
- 如何从C++dll中提取函数信息