Android JNI Ошибка: предупреждение: инициализация делает целое число из указателя без приведения - PullRequest
1 голос
/ 13 сентября 2011

Я новичок в Android JNI.Я отправляю объект JAVA из моего файла Java в код C, указанный ниже.Моя информация о jObject содержит значения char [] в java. На самом деле я думаю, что не могу преобразовать jObject в char, и поэтому, когда я компилирую этот код, я получаю сообщение об ошибке:

предупреждение: инициализация делает целое число из указателя безcast

My C File:

typedef struct {
    unsigned char reg_chal[32];
    unsigned char aid[32];
} reg_info_t;

JNIEXPORT jint JNICALL Java_com_marakana_NativeLib_reg(JNIEnv *env,jclass obj,jobject info ,jchar details,jchar reg_code)
{
    reg_info_t regInfo;
    jclass clazz;
    jfieldID fid;
    jmethodID mid;

    jint status =0; 

    LOGD("NDK:LC: [%s]", "JNI Function call started");
    LOGD("NDK:LC: [%s]", details);
    LOGD("NDK:LC: [%c]", reg_code);

    //GetInfo(entryInfo);   // fills in the entryInfo

    clazz = (*env)->GetObjectClass(env, info);
    if (0 == clazz)
    {
        printf("GetObjectClass returned 0\n");
        return(-1);
    }

    jchar reg_chal = (*env)->NewStringUTF(env,regInfo.reg_chal);
    fid = (*env)->GetFieldID(env,clazz,"reg_chal","Ljava/lang/String;");
    (*env)->SetObjectField(env,info,fid,reg_chal);
    LOGD("NDK:LC: [%c]", reg_chal);

    jchar aid = (*env)->NewStringUTF(env,regInfo.aid );
    fid = (*env)->GetFieldID(env,clazz,"aid ","Ljava/lang/String;");
    (*env)->SetCharField(env,info,fid,aid );
    LOGD("NDK:LC: [%c]", aid);


    //reg_step_1(info ,  details, reg_code);
    //status = reg_step_1(info ,  details, reg_code);
    return status; 

}

Пожалуйста, помогите мне, как исправить эту ошибку конвертации?

1 Ответ

1 голос
/ 13 сентября 2011

NewStringUTF не возвращает jchar;он возвращает jstring, который на самом деле является синонимом jobject.

. Вы должны изменить jchar reg_chal на jstring reg_chal и изменить jchar aid на jstring aid.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...