我已经开始在 Android 的原生 c++ 中移植一些 Java 代码。我在 C++ 中使用字符串时遇到问题:
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)
应用程序.mk 文件:
APP_STL := stlport_static
MinGW 已安装并添加到路径中。我尝试使用 android-ndk-r8e 和 android-ndk-r8-crystax-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 64 位。谁能说说怎么解决?谢谢。
编辑。
在 C/C++ 常规中 - 路径和符号已设置:C:\Android\android-ndk-r8e\platforms\android-14\arch-arm\usr\include