Pra*_*ham 109 java java-native-interface
我jstring通过使用JNI 将URL字符串从Java传递到C代码作为数据类型.我的库方法需要一个char *url.
我如何转换jstring的char *?
PS:在C中使用jcharArray有什么好处吗?(即char []在本机方法中传递而不是字符串)
Jas*_*ers 218
这是我在开始使用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(env, javaString, 0);
// use your string
(*env)->ReleaseStringUTFChars(env, javaString, nativeString);
}
Run Code Online (Sandbox Code Playgroud)
kan*_*ear 48
首先感谢Jason Rogers的回答.
在Android && cpp应该是这样的:
const char *nativeString = env->GetStringUTFChars(javaString, nullptr);
// use your string
env->ReleaseStringUTFChars(javaString, nativeString);
Run Code Online (Sandbox Code Playgroud)
可以修复此错误:
1.error:' - >'的基本操作数有非指针类型'JNIEnv {aka _JNIEnv}'
2.error:没有匹配函数来调用'_JNIEnv :: GetStringUTFChars(JNIEnv*&,_ jstring*&,bool)'
3.error:没有匹配函数来调用'_JNIEnv :: ReleaseStringUTFChars(JNIEnv*&,_ jstring*&,char const*&)'
4.add"env-> DeleteLocalRef(nativeString);" 最后.
| 归档时间: |
|
| 查看次数: |
110115 次 |
| 最近记录: |