JNI编程——手工注册 native methods
来源:互联网 发布:招工网源码 编辑:程序博客网 时间:2024/06/08 07:40
java 程序调用 native methods 之前,有2个步骤:
1、System.loadLibrary("foo"); 定位和加载 libfoo.so(在Windows 上是 foo.dll)
2、 java虚拟机在所有已加载的共享库中,查找native methods 的implementation
(例如,java中 Foo类的 g() native method,java vm 会自动查找名为 Java_Foo_g的函数)
上面第2步,程序员可以代替虚拟机,手动来链接native methods 到它的 implementation。
方法:
注册一个function pointer到一个class referenec,method name 和 method descriptor。
例如:
(在C/C++中):
JNINativeMethod nm;
nm.name = "g";
nm.signature = "()V";
nm.fnPtr = g_impl;
(*env)->RegisterNatives(env, cls, &nm, 1);
// 原型: void JNICALL g_impl_(JNIEnv* env, jobject self);
// 因为是使用函数指针,所以不需要export,因此不用加 JNIEXPORT。但是仍然需要加 JNICALL。
手工注册 native methods 的好处:
1、在早期注册,后面调用的时候效率会高一些
2、可以临时修改native methods,从而链接到另外一个native methods implementation
3、如果你写的程序是把java vm嵌入到自己的程序,那么这个方法会很有用(虚拟机不会从程序自身寻找native methods implementation, 只会从它加载的共享库中寻找)
- JNI编程——手工注册 native methods
- JNI,让native callback Java methods
- JNI——手工编译HelloJNI
- android JNI native 编程
- Native Methods
- JNI学习笔记(五)——fields和methods
- JNI学习笔记(五)——fields和methods
- Android平台的jni---注册native函数
- Android Native jni 编程知识
- Android Native jni 编程入门
- JNI动态注册native方法及JNI数据使用
- Java Native Interface——JNI
- android — JNI注册方法说明
- android — JNI注册方法说明
- Swift编程语言学习12 ——实例方法(Instance Methods)和类型方法(Type Methods)
- Android JNI编程—JNI基础
- [转载] Android JNI编程—JNI基础
- JNI (Java Native Interface) 编程示例
- WINDOWS 7 64 位下中文乱码解决方法
- window.location用法区别
- 在客户端获取服务器端的时间
- 堆栈溢出
- 深入理解 __doPostBack
- JNI编程——手工注册 native methods
- jQuery美元符冲突的解决方法
- jquery的ready(fn)方法
- Android/linux(earlysuspend、lateresume)睡眠唤醒机制简介
- session和cookie的区别
- 48个android程序源码贡献!!!值得收藏!!!
- [易飞]二、邮件预警-检查工时底数和暂收明细
- office2007激活向导问题
- 线程同步异步概念