Я начал портировать некоторый Java-код в родной C++ в Android. У меня есть проблема с использованием строк в C++:Тип 'std :: string' не может быть разрешен.
Type 'std::string' could not be resolved
Там есть мой пример кода
#include <jni.h>
#include <lexu_me_test_native.h>
#include <string.h>
using namespace std;
JNIEXPORT jstring JNICALL Java_lexu_me_test_native_prepairToShowNative
(JNIEnv * env, jclass javaThis, jstring str)
{
jboolean blnIsCopy;
jstring jstrOutput;
char* strCOut;
std::string ss;
const char* strCIn = (env)->GetStringUTFChars(str , &blnIsCopy);
// convert jstring to a char array
// Do stuff with the char array and and store the result
// in another char array strCOut
(env)->ReleaseStringUTFChars(str , strCIn); // release jstring
jstrOutput = (env)->NewStringUTF(strCOut); // convert char array to jstring
return jstrOutput;
}
Android.mk файл:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native
LOCAL_SRC_FILES := native.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk файл:
APP_STL := stlport_static
MinGW установлен и добавлен в путь. Я пробовал использовать android-ndk-r8e и android-ndk-r8-crystallax-1, ничего не помогло. В ошибках терминала Cygwin:
Compile++ thumb : native <= native.cpp
jni/native.cpp: In function '_jstring* Java_lexu_me_test_native_prepairToShowNative(JNIEnv*, jclass, jstring)':
jni/native.cpp:11:2: error: 'string' was not declared in this scope
jni/native.cpp:11:9: error: expected ';' before 'ss'
Я использую Win 7 64bit. Может ли кто-нибудь сказать, как это можно решить? Спасибо.
EDIT.
В C/General C++ - Path и символы уже установлено: C: \ Android \ андроида-NDK-R8e \ платформы \ андроида-14 \ заклятой руки \ USR \ включают
'# include ',' 'является заголовком библиотеки C. –
jrok
с использованием пространства имен std; Попробуйте строку вместо std :: string – Jite
@Jite Не предлагайте это. [using namespace std - плохая практика] (http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice) – Rapptz