Android JNI错误:警告:初始化从指针生成整数而不进行强制转换

Android JNI错误:警告:初始化从指针生成整数而不进行强制转换,android,java-native-interface,Android,Java Native Interface,我是Android JNI的新手。我将JAVA对象从JAVA文件发送到下面给出的C代码。我的jObject信息包含java中的char[]值。实际上,我认为我无法将jObject转换为char,因此,当我编译此代码时,会出现以下错误: 警告:初始化从指针生成整数而不进行强制转换 我的C文件: typedef struct { unsigned char reg_chal[32]; unsigned char aid[32]; } reg_info_t; JNIEXPORT ji

我是Android JNI的新手。我将JAVA对象从JAVA文件发送到下面给出的C代码。我的jObject信息包含java中的char[]值。实际上,我认为我无法将jObject转换为char,因此,当我编译此代码时,会出现以下错误:

警告:初始化从指针生成整数而不进行强制转换

我的C文件:

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; 

}

请帮助我如何修复此转换错误?

NewStringUTF
不返回
jchar
;它返回一个
jstring
,它实际上只是
jobject
的同义词


您应该将
jchar reg_chal
更改为
jstring reg_chal
,并将
jchar-aid
更改为
jstring-aid

NewStringUTF
不返回
jchar
;它返回一个
jstring
,它实际上只是
jobject
的同义词


您应该将
jchar-reg\u-chal
更改为
jstring-reg\u-chal
,并将
jchar-aid
更改为
jstring-aid

@Struart-Cook:感谢您的帮助。它现在正在建造图书馆。但是我现在遇到了一个新类型的错误:I/DEBUG(31):************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************。它现在正在建造图书馆。但是我现在得到了一种新类型的错误:I/DEBUG(31):*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************