簡體   English   中英

如何在JNI中將char *轉換為jcharArray

[英]How to convert char* to jcharArray in JNI

如何在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

感謝代碼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);

您可以使用

jchar* jVersion = (jchar*)version;
env->SetCharArrayRegion(j_version_array, 0, version_len, jVersion);

希望它可以幫到你。 謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM