JNI 将 jstring 转换为 char *
2022-08-31 09:00:31
我通过使用JNI将一个URL字符串从Java传递到C代码作为数据类型。我的库方法需要一个 as url。jstring
char *
如何转换?jstring
char *
P.S.:在C中使用jcharArray有什么好处吗?(即在本机方法中传递而不是字符串)char []
我通过使用JNI将一个URL字符串从Java传递到C代码作为数据类型。我的库方法需要一个 as url。jstring
char *
如何转换?jstring
char *
P.S.:在C中使用jcharArray有什么好处吗?(即在本机方法中传递而不是字符串)char []
以下是我开始使用JNI时发现的一些有用的链接
http://en.wikipedia.org/wiki/Java_Native_Interface http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
关于你的问题,你可以用这个
JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj, jstring javaString)
{
const char *nativeString = env->GetStringUTFChars(javaString, 0);
// use your string
env->ReleaseStringUTFChars(javaString, nativeString);
}
首先感谢Jason Rogers的回答。
在 Android & cpp 中应该是这样的:
const char *nativeString = env->GetStringUTFChars(javaString, nullptr);
// use your string
env->ReleaseStringUTFChars(javaString, nativeString);
可以修复此错误:
1.错误:“->”的基本操作数具有非指针类型“JNIEnv {aka _JNIEnv}”
2.错误:没有匹配函数用于调用'_JNIEnv::GetStringUTFChars(JNIEnv*&, _jstring*&, bool)'
3.错误:调用“_JNIEnv::ReleaseStringUTFChars(JNIEnv*&, _jstring*&, char const*&)'没有匹配函数
4.在末尾添加“env->DeleteLocalRef(nativeString);”。