我使用jni,目的是用上层java程序调用串口读写程序C语言,下面是C语言一部分
JNIEXPORTvoidJNICALLJava_com_qysx_ceshi_main(JNIEnv*env,jclassthiz,jobjectretobj){jby...
JNIEXPORT void JNICALL
Java_com_qysx_ceshi_main(JNIEnv * env, jclass thiz,jobject retobj)
{
jbyteArray bytearray = (*env)->NewByteArray(env,count);
(*env)->SetByteArrayRegion(env,bytearray,0, count,(jbyte*)buff);
__android_log_print(ANDROID_LOG_DEBUG, "laiwugang","buff Reading...");
jclass cls = (*env)->GetObjectClass(env, retobj);
__android_log_print(ANDROID_LOG_DEBUG, "laiwugang","cls Reading...");
jfieldID fid = (*env)->GetFieldID(env, cls, "retbytes", "[B");
__android_log_print(ANDROID_LOG_DEBUG, "laiwugang","fid Reading...");
}
程序为什么不执行jclass cls = (*env)->GetObjectClass(env, retobj);这一句 展开
Java_com_qysx_ceshi_main(JNIEnv * env, jclass thiz,jobject retobj)
{
jbyteArray bytearray = (*env)->NewByteArray(env,count);
(*env)->SetByteArrayRegion(env,bytearray,0, count,(jbyte*)buff);
__android_log_print(ANDROID_LOG_DEBUG, "laiwugang","buff Reading...");
jclass cls = (*env)->GetObjectClass(env, retobj);
__android_log_print(ANDROID_LOG_DEBUG, "laiwugang","cls Reading...");
jfieldID fid = (*env)->GetFieldID(env, cls, "retbytes", "[B");
__android_log_print(ANDROID_LOG_DEBUG, "laiwugang","fid Reading...");
}
程序为什么不执行jclass cls = (*env)->GetObjectClass(env, retobj);这一句 展开
2个回答
展开全部
试试
jclass cls = (*env)->FindClass(env,"com.qysx.ceshi");
你的函数名太不好看了,试试JNINativeMethod结构体,还有你的LOG定义宏会比较方便
jclass cls = (*env)->FindClass(env,"com.qysx.ceshi");
你的函数名太不好看了,试试JNINativeMethod结构体,还有你的LOG定义宏会比较方便
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询