我开始在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)
Application.mk文件:
APP_STL := stlport_static
MinGW已安装并添加到路径中。我尝试使用android-ndk-r8e和android-ndk-r8-crystax-1没有任何帮助。在Cygwin Terminal错误:
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。有谁能说它怎么解决? 感谢。
修改
在C / C ++中 - 路径和符号已设置:C:\ Android \ android-ndk-r8e \ platforms \ android-14 \ arch-arm \ usr \ include
答案 0 :(得分:1)
如果其他答案无效,请尝试以下步骤:
using namespace std;
,请使用string
代替std::string
。#include <string>
无效并且您正在使用Linux,请尝试#include <unistd.h>
。如果您正在使用其他操作系统,请使用#include <cstdlib>
。答案 1 :(得分:-1)
检查您的Android.mk
和Application.mk
文件。确保选择STL库并在Application.mk
文件中包含int:
Application.mk: APP_STL := gnustl_static
(gnustl_static)可以替换为您想要的STL版本,STLPort仍然是一个选项