Android开发Java中long型在JNI中类型的对应
来源:互联网 发布:知乎 这也能膜 编辑:程序博客网 时间:2024/06/18 07:50
昨天在从JAVA层往JNI传值得时候出现一个错误,这是一个将JAVA中的一个long型传到JNI的过程:
```
JNI WARNING: JNI method called with exception pending in Lcom/attop/h264/main/H264PlayAty;.startRecDownload:(Ljava/lang/Object;Ljava/lang/String;)V (GetFieldID)
java.lang.NoSuchFieldError: no field with name='mStartTime' signature='L' in class Lcom/attop/h264/interfaces/RemoteVideo;
```
因为之前在传值得时候遇到的都是int,string类型的数据,就直接用以下方式都OK:
jfieldID jfidChan = (*env)->GetFieldID(env, class, "mChanID", "I");
但是今天在传long型的时候用:
jfieldID jfidStartTime = (*env)->GetFieldID(env, class, "mStartTime", "L");
最后才发现java中的long类型在JNI中的signature根本就不是"L",而是“J”。而L是什么呢,是fully-qualified-class(全限定的类),用法如String类型一般:Ljava/lang/String;。
特此记录一下,附jni.h中的关于jvalue定义以及Java数据在JNI中的对应。
typedef union jvalue { jboolean z; jbyte b; jchar c; jshort s; jint i; jlong j; jfloat f; jdouble d; jobject l;} jvalue;
/* * Primitive types that match up with Java equivalents. */#ifdef HAVE_INTTYPES_H# include <inttypes.h> /* C99 */typedef uint8_t jboolean; /* unsigned 8 bits */typedef int8_t jbyte; /* signed 8 bits */typedef uint16_t jchar; /* unsigned 16 bits */typedef int16_t jshort; /* signed 16 bits */typedef int32_t jint; /* signed 32 bits */typedef int64_t jlong; /* signed 64 bits */typedef float jfloat; /* 32-bit IEEE 754 */typedef double jdouble; /* 64-bit IEEE 754 */#elsetypedef unsigned char jboolean; /* unsigned 8 bits */typedef signed char jbyte; /* signed 8 bits */typedef unsigned short jchar; /* unsigned 16 bits */typedef short jshort; /* signed 16 bits */typedef int jint; /* signed 32 bits */typedef long long jlong; /* signed 64 bits */typedef float jfloat; /* 32-bit IEEE 754 */typedef double jdouble; /* 64-bit IEEE 754 */#endif
0 0
- Android开发Java中long型在JNI中类型的对应
- Android中long类型对应Java/Jni/C++中的类型
- Jni中本地类型和java类型对应表
- JNI中java类型与C/C++类型对应关系
- JNI中java类型与C/C++类型对应关系
- JNI中java类型与C/C++类型对应关系
- JNI中java类型与C/C++类型对应关系
- JNI中java类型与C/C++类型对应关系
- JNI中java类型与C/C++类型对应关系
- java中Long类型和long类型的大小比较
- 【JNI】JNI中java类型的简写
- 【JNI】JNI中java类型的简写
- 《Android JNI》05 在JNI中调用Java的函数
- Android中如何查看在res中存放的drawable文件对应的JAVA类型是什么呢
- 在eclipse中进行Android下JNI开发的步骤
- Oracle中根据Date型转换成Java对应的long型毫秒数
- Oracle中根据Date型转换成Java对应的long型毫秒数
- Oracle中根据Date型转换成Java对应的long型毫秒数
- c# 知识总结
- java正则表达式特殊字符转义
- Openjudge7219 复杂的整数划分问题(dp)
- VC6使用GDI+进行图像的特效处理和MFC学习笔记-1
- CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\e6148660
- Android开发Java中long型在JNI中类型的对应
- 手势识别器
- 测试工程师(QA)必知必会的测试工具
- system.cpp
- shuoj-1942: yaoge and xyiyy's interesting game-数学-快速幂
- Courses
- C++沉思录 第八章 面向对象程序范例
- <JAVA>Hadoop安装配置(单机)
- 解压tar.xz方法