如何在JNI中将char *转换为jcharArray [英] How to convert char* to jcharArray in JNI

查看:594
本文介绍了如何在JNI中将char *转换为jcharArray的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在JNI中将char *转换为jcharArray?

How can I convert char* to jcharArray in JNI?

我必须在//TODO注释部分输入什么代码?

What code do I have to put in // TODO comment part?

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;
}

添加============================================== =======================

Add ======================================================================

正如Gearon所建议的那样,当我输入以下代码时,将引发错误.

As Gearon suggested, when I put the below code an error is raised.

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

推荐答案

感谢代码,Gearon建议我的最终代码是这样的.

Thanks for the code Gearon suggested my final code is something like this.

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);

这篇关于如何在JNI中将char *转换为jcharArray的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆