首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在JNI中将char*转换为jcharArray

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

Stack Overflow用户
提问于 2016-07-21 08:54:32
回答 2查看 3.7K关注 0票数 5

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

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

代码语言:javascript
运行
复制
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所建议的,当我放入下面的代码时,会引发一个错误。

代码语言:javascript
运行
复制
jchar* jVersion = (jchar*)version;
env->SetCharArrayRegion(jcharArray, 0, version_len, jVersion);

以下是错误消息。

代码语言:javascript
运行
复制
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
EN

回答 2

Stack Overflow用户

发布于 2016-07-21 09:35:17

谢谢你的代码,Gearon建议我的最终代码是这样的。

代码语言:javascript
运行
复制
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);
票数 5
EN

Stack Overflow用户

发布于 2016-07-21 08:58:23

您可以使用

代码语言:javascript
运行
复制
jchar* jVersion = (jchar*)version;
env->SetCharArrayRegion(j_version_array, 0, version_len, jVersion);

希望能对你有所帮助。谢谢。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38493156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档