JNI 开发笔记 - 示例代码
来源:互联网 发布:淘宝网红店铺有哪些 编辑:程序博客网 时间:2024/05/29 05:54
SampleCode
#include <jni.h>#include <stdio.h>#include <errno.h>//com/ex/Foo.java/* Native function */JNIEXPRORT jboolean JNICALL Java_com_ex_Foo_fooFunc(JNIEnv *env, jobject obj, jint k){ if (k > 0) return JNI_TRUE; else return JNI_FALSE;}/* native code call java method */JNIEXPRORT jboolean JNICALL Java_com_ex_Foo_callJavaFunc(JNIEnv *env, jobject obj, jint k){ jboolean r = JNI_FALSE; jclass clazz = (*env)->GetObjectClass(env, obj); if (clazz == NULL) return r; jmethodID mID = (*env)->GetMethodID(env, clazz, "sayHello", "(I)Z"); if (mID == NULL) return r; r = (*env)->CallBooleanMethod(env, obj, mID, 1); if (ExceptionCheck(env) == JNI_TRUE) return JNI_FALSE; else return r;}/**/void fooPrintString(JNIEnv *env, jobject obj, jstring str){ jchar *jstr = (*env)->GetStringUTFChars(env, str, 0); if (jstr == NULL) return NULL; printf("String from java:%s", jstr); (*env)->ReleaseStringUTFChars(env, str, jstr);}jint fooGetByteArray(JNIEnv *env, jclass clazz, jbyteArray array){ jint len = (*env)->GetArrayLength(env, array); if (len < strlen("Hello Jni") + 1) return -1; jbyte *buf = (*env)->GetByteArrayElements(env, array, 0); if (buf == NULL) return -ENOMEM; jint r = sprintf(buf, "Hello Jni"); (*env)->ReleaseByteArrayElements(env, array, buf, 0); return r;}static JNINativeMethod methods[] = { {"fooPrintString", "(Ljava/lang/String;)", (void *)fooPrintString}, {"fooGetByteArray", "([B)I", (void *)fooGetByteArray},};jint JNI_OnLoad(JavaVM *vm, void *reserved){ JNIEnv *env; if ((*vm)->GetEnv(vm, (void **)&env, JNI_VERSION_1_4) != JNI_OK) return JNI_ERR; jclass clazz = (*env)->FindClass(env, "com/ex/Foo"); if (clazz == NULL) return JNI_ERR; jint len = sizeof(methods) / sizeof(methods[0]); (*env)->RegisterNatives(env, clazz, methods, len); return JNI_VERSION_1_4;}
0 0
- JNI 开发笔记 - 示例代码
- JNI代码示例
- Android Jni代码示例讲解
- Android Jni代码示例讲解
- Android Jni代码示例讲解
- Android Jni代码示例讲解
- Android Jni代码示例讲解
- Android Jni代码示例讲解
- Android Jni代码示例讲解
- JNI 开发笔记 - Native代码开发以及核心API介绍
- JNI笔记 JNI开发流程
- Android Eclipse JNI开发示例
- Android Jni开发笔记
- Android JNI开发笔记
- JNI 开发笔记 - 基本概念
- JNI 开发笔记 - 数据类型
- JNI 开发笔记
- JNI NDK开发笔记
- addEventListener:为单个事件注册多个事件事件处理程序
- 猜拳游戏
- [Zabbix3.0 ]添加Nginx监控
- Kafka源码分析之Sender
- STM32 CubeMX HAL UART interface API
- JNI 开发笔记 - 示例代码
- 进程间通信 - 匿名管道实现
- 如何回答「未来5年如何规划?」【面试核心问题8】
- Lua语句
- DBGridEh解决乱码问题
- CI框架导出数据
- Java调用ICTCLAS2016 之中文分词
- 函数指针 指针函数 指针的指针 指向指针数组的指针
- HDU-5662 YJQQQAQ and the function (枚举&&单调栈)