Android JNI(三)————JNI_在java中调用C函数(显示映射)
来源:互联网 发布:数据库系统概论公开课 编辑:程序博客网 时间:2024/09/21 08:43
第一步:编写、编译java程序
class HelloJNI {native void printHello();static {System.loadLibrary("hellojni");}public static void main(String args[]) {HelloJNI myJNI = new HelloJNI();myJNI.printHello();}}
第二步:在JNI中获取成员变量或成员方法签名
# javap -s -p HelloJNICompiled from "HelloJNI.java"class HelloJNI { HelloJNI(); Signature: ()V native void printHello(); Signature: ()V public static void main(java.lang.String[]); Signature: ([Ljava/lang/String;)V static {}; Signature: ()V}
第三步:编写C++/C程序
#include <jni.h> /* /usr/lib/jvm/java-1.7.0-openjdk-amd64/include/ */#include <stdio.h>#if 0typedef struct { char *name; /* Java里调用的函数名 */ char *signature; /* JNI字段描述符, 用来表示Java里调用的函数的参数和返回值类型 */ void *fnPtr; /* C语言实现的本地函数 */} JNINativeMethod;#endifvoid c_hello(JNIEnv *env, jobject obj){printf("Hello World!\n");return ;}static const JNINativeMethod methods[] = {{"printHello", "()V", (void *)c_hello},};/* System.loadLibrary */JNIEXPORT jint JNICALLJNI_OnLoad(JavaVM *jvm, void *reserved){JNIEnv *env;jclass cls;if ((*jvm)->GetEnv(jvm, (void **)&env, JNI_VERSION_1_4)) {return JNI_ERR; /* JNI version not supported */}cls = (*env)->FindClass(env, "HelloJNI");if (cls == NULL) {return JNI_ERR;}/* 2. map java hello <-->c c_hello */if ((*env)->RegisterNatives(env, cls, methods, 1) < 0)return JNI_ERR;return JNI_VERSION_1_4;}
阅读全文
0 0
- Android JNI(三)————JNI_在java中调用C函数(显示映射)
- Android JNI(二)————JNI_在java中调用C库函数(隐式建立)
- Android JNI(四)————JNI_在由C语言编写的JNI本地函数中如何控制Java端的代码
- 在java中调用c语言——JNI入门
- 本地方法(JNI)——从java 程序中调用C函数
- 《Android JNI》05 在JNI中调用Java的函数
- Android JNI 在C中调用Java(包括自定义的Java方法和Log)
- JNI学习系列——在C/C++中调用JAVA
- Android JNI入门第六篇——C调用Java
- Android JNI入门——C调用Java
- Android JNI入门第七篇——C调用Java
- JNI学习系列——java中调用C/C++
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系
- JNI_最简单的Java调用C/C++代码(自己整理)
- 玲珑杯----C 咸鱼魔法记
- 微量元素
- Android CTS 测试
- 算法导论程序37--动态规划原理
- appium grid模式运行自动化
- Android JNI(三)————JNI_在java中调用C函数(显示映射)
- Angular2中constructor与ngOninit的区别
- zabbix中文配置指南
- (198)材质编辑器
- Android打造一个通用的网络请求引擎HttpUtils
- Android安全之NDK的代码混淆 -- Ollvm
- TS3310带库更换驱动器步骤
- 王伟奇个人比赛记录----无人机
- service基础