如何在JNI中将char*转换为jcharArray?
我必须在// TODO注释部分中放入什么代码?
JNIEXPORT jcharArray JNICALL Java_finger_FingerPrintJNI_GetVer(JNIEnv *env, jobject thisObj){
char* version = getText(); // Returns char* data type
int version_len = strlen(version);
jcharArray j_version_array = env->NewCharArray(version_len + 1);
// TODO Convert char* to jcharArray
return jcharArray;
}添加======================================================================
正如Gearon所建议的,当我放入下面的代码时,会引发一个错误。
jchar* jVersion = (jchar*)version;
env->SetCharArrayRegion(jcharArray, 0, version_len, jVersion);以下是错误消息。
JNIEnv_::SetCharArrayRegion(jcharArray,jsize,jsize,const jchar *)': cannot convert argument 1 from 'jchar *' to 'jcharArray'
sample.cpp(26): note: Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast发布于 2016-07-21 09:35:17
谢谢你的代码,Gearon建议我的最终代码是这样的。
jchar* j_version = (jchar*)calloc(sizeof(jchar), version_len);
for(int i=0; i <= version_len; i++){
j_version[i] = (jchar) version[i];
}
jcharArray j_version_array = env->NewCharArray(version_len + 1);
env->SetCharArrayRegion(j_version_array, 0, version_len , j_version);发布于 2016-07-21 08:58:23
您可以使用
jchar* jVersion = (jchar*)version;
env->SetCharArrayRegion(j_version_array, 0, version_len, jVersion);希望能对你有所帮助。谢谢。
https://stackoverflow.com/questions/38493156
复制相似问题