Android JNI错误:警告:初始化从指针生成整数而不进行强制转换
我是Android JNI的新手。我将JAVA对象从JAVA文件发送到下面给出的C代码。我的jObject信息包含java中的char[]值。实际上,我认为我无法将jObject转换为char,因此,当我编译此代码时,会出现以下错误: 警告:初始化从指针生成整数而不进行强制转换 我的C文件: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
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-aidNewStringUTF
不返回jchar
;它返回一个jstring
,它实际上只是jobject
的同义词
您应该将jchar-reg\u-chal
更改为jstring-reg\u-chal
,并将jchar-aid
更改为jstring-aid@Struart-Cook:感谢您的帮助。它现在正在建造图书馆。但是我现在遇到了一个新类型的错误:I/DEBUG(31):************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************。它现在正在建造图书馆。但是我现在得到了一种新类型的错误:I/DEBUG(31):*********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************