JNI调用Java方法
2011-11-18 11:15
281 查看
JNI 调用java类的方法与反射代码类似。
先得到object的类。
jobject obj;
jclass cls = env->GetObjectClass(obj);
然后查找方法:
jmethodID mgetZoom = env->GetMethodID(cls, "getZoom", "()I");
然后用这个方法id去执行obj的方法。
jint i = env->CallIntMethod(obj, mgetZoom);
需要注意的是 GetMethodID方法的格式。
jmethodID GetMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig);
JNIEnv这个参数C++中不需要。clazz就是前面得到的jclass,name则是方法名称,sig是方法签名。
方法签名有特定的格式:(param-type)ret-type,括号内表示该方法传入参数类型,后面的是返回类型
PS: 方法签名可以通过 javap -s <CLASS> 查看。
先得到object的类。
jobject obj;
jclass cls = env->GetObjectClass(obj);
然后查找方法:
jmethodID mgetZoom = env->GetMethodID(cls, "getZoom", "()I");
然后用这个方法id去执行obj的方法。
jint i = env->CallIntMethod(obj, mgetZoom);
需要注意的是 GetMethodID方法的格式。
jmethodID GetMethodID(JNIEnv *env, jclass clazz, const char *name, const char *sig);
JNIEnv这个参数C++中不需要。clazz就是前面得到的jclass,name则是方法名称,sig是方法签名。
方法签名有特定的格式:(param-type)ret-type,括号内表示该方法传入参数类型,后面的是返回类型
PS: 方法签名可以通过 javap -s <CLASS> 查看。
相关文章推荐
- 简单的使用jni调用java方法
- Java JNI 调用C#方法
- HAL中通过JNI调用java方法【转】
- Java通过JNI调用ICTCLAS中文分词包的方法
- JNI调用java层的方法
- 【学习Android NDK开发】native code通过JNI调用Java方法
- JNI(Java本地方法调用)
- java JNI 实现原理 (五) JNI方法解释调用
- JNI————C中调用JAVA方法错误和注意的地方
- #菜鸟之旅#Android Studio开发JNI工程——Native调用Java方法获取IMEI
- JAVA通过JNI调用本地C语言方法
- Java通过JNI调用C语言的方法
- JNI中C调用Java方法
- Java通过调用C/C++实现的DLL动态库――JNI的方法
- Java中使用JNI调用本地动态库的方法
- [2014.1.31] Eclipse、MinGW、JNI编写C++生成dll, Java端调用的完整示例(附java.lang.UnsatisfiedLinkError解决方法)
- 简单的使用jni调用java方法
- 简单的使用jni调用java方法
- Java通过JNI调用Tuxedo方法
- JNI里面调用Java,JNI非JAVA线程里面调用Java方法