У меня есть код C++ под android JNI, когда я использую ndk-build в командной строке, он может сгенерировать .so libfile, но при запуске моего проекта как приложение для Android, eclipse предупреждает о некорректной ошибке в функции getline(), он должен сначала сначала исправить ошибку. поэтому я смущен.android ndk и eclipse дают другую информацию об ошибке о функции cline 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() информация является: Недопустимые аргументы " Кандидаты: станд :: basic_istream < # 0, # 1> & GetLine (станд :: basic_istream < # 0, # 1> &, станд :: basic_string < # 0, # 1, # 2> &) станд :: basic_istream < # 0, # 1> & GetLine (станд :: basic_istream < # 0, # 1> &, станд :: basic_string < # 0, # 1, # 2> &, # 0)
, но на самом деле, андроид-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 ****
у вставили эту функцию является containde в моем 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 напоминает, что содержит ошибку, поэтому я не могу запустить проект.
Обычно я бы сказал, что фактический ndk-gcc, а не Eclipse - это то, что вам действительно нужно удовлетворить (вы можете просто отключить Eclipse, если вам не хочется указывать его на поддерживающие файлы). Однако ваша попытка ссылаться на файл на машине разработки по пути к Windows, в том, что предлагают ваши теги, - это код андроида-ndk, крайне ошибочен - этот файл не будет доступен, поскольку программа не будет запущена в окне окна, а скорее на реальном или эмулированном устройстве Android без доступа к C :.Таким образом, это не сообщения об ошибках, а вся идея, которая должна быть актуальна сейчас. –
У меня есть смысл. вы советуете мне выключить код проверки eclispe. Другое дело, что ваше уведомление о том, что мой код ошибочен, я это знаю, я уже не исправляю его, я передам путь к файлу в функции экспорта как объект jstring, а затем сделаю somthing. спасибо за советы. – user1279988
@ Chris-Stratton: кроме того, что Application.mk настроен на ** clang **, а не ** gcc **. –