Android JNI 几个常用方法
2012-04-17 22:08
417 查看
1. System.load 参数为库文件的绝对路径,可以是任意路径。
System.load("/system/lib/libforlinx_runtime.so");
2. System.loadLibrary ("TestJNI");
这里,TestJNI.dll 必须是在java.library.path这一jvm变量所指向的路径中。
可以通过如下方法来获得该变量的值:
System.getProperty("java.library.path");
3. JNI_OnUnload & JNI_OnLoad
JNI_OnUnload()函数与JNI_OnLoad()相对应的。
在载入C组件时会立即呼叫JNI_OnLoad()来进行组件内的初期动作;
而当VM释放该C组件时,则会呼叫JNI_OnUnload()函数来进行善后清除动作。
//使用例子: /article/5887777.html
jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
.........
}
4. RegisterNatives
jint RegisterNatives(jclass clazz, const JNINativeMethod* methods,jint nMethods)
typedef struct {
const char* name; /*Java中函数的名字*/
const char* signature; /*描述了函数的参数和返回值*/
void* fnPtr; /*函数指针,指向C函数*/
} JNINativeMethod;
const char* signature: 前面参数,后面返回值
例子:
"()Z" ==> (void *)forlinx_init ==> jboolean forlinx_init(JNIEnv *env, jclass clazz)
"()I" ==> (void*)init_native ==> jint init_native(JNIEnv *env, jobject clazz)
字符 Java类型 C类型
V void void
Z jboolean boolean
I jint int
J jlong long
D jdouble double
F jfloat float
B jbyte byte
C jchar char
S jshort short
数组则以"["开始,用两个字符表示
[I jintArray int[]
[F jfloatArray float[]
[B jbyteArray byte[]
[C jcharArray char[]
[S jshortArray short[]
[D jdoubleArray double[]
[J jlongArray long[]
[Z jbooleanArray boolean[]
转载请注明出处:http://www.cnblogs.com/langlang/
System.load("/system/lib/libforlinx_runtime.so");
2. System.loadLibrary ("TestJNI");
这里,TestJNI.dll 必须是在java.library.path这一jvm变量所指向的路径中。
可以通过如下方法来获得该变量的值:
System.getProperty("java.library.path");
3. JNI_OnUnload & JNI_OnLoad
JNI_OnUnload()函数与JNI_OnLoad()相对应的。
在载入C组件时会立即呼叫JNI_OnLoad()来进行组件内的初期动作;
而当VM释放该C组件时,则会呼叫JNI_OnUnload()函数来进行善后清除动作。
//使用例子: /article/5887777.html
jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
.........
}
4. RegisterNatives
jint RegisterNatives(jclass clazz, const JNINativeMethod* methods,jint nMethods)
typedef struct {
const char* name; /*Java中函数的名字*/
const char* signature; /*描述了函数的参数和返回值*/
void* fnPtr; /*函数指针,指向C函数*/
} JNINativeMethod;
const char* signature: 前面参数,后面返回值
例子:
"()Z" ==> (void *)forlinx_init ==> jboolean forlinx_init(JNIEnv *env, jclass clazz)
"()I" ==> (void*)init_native ==> jint init_native(JNIEnv *env, jobject clazz)
字符 Java类型 C类型
V void void
Z jboolean boolean
I jint int
J jlong long
D jdouble double
F jfloat float
B jbyte byte
C jchar char
S jshort short
数组则以"["开始,用两个字符表示
[I jintArray int[]
[F jfloatArray float[]
[B jbyteArray byte[]
[C jcharArray char[]
[S jshortArray short[]
[D jdoubleArray double[]
[J jlongArray long[]
[Z jbooleanArray boolean[]
转载请注明出处:http://www.cnblogs.com/langlang/
相关文章推荐
- Android之TextView 不常用的几个方法
- Form开发中组件控制的几个常用方法
- 举例详解Python中threading模块的几个常用方法
- Postgresql_常用的几个日期处理方法
- 查找域控的几个常用方法
- JPA的几个常用方法
- java并发库之Executors常用的创建ExecutorService的几个方法说明
- excel导入数据库:SQL Server数据库中成批导入数据的几个常用方法
- cocos2d-x-2.0新增加了几个UI控件,这里我介绍下常用的这几个UI控件(CCControlSlider、CCControlSwitch、CCControlColourPicker)使用方法
- 操作Unix系统常用的几个方法与命令
- Math 类的几个常用方法
- Joomla源代码解析(六) JDocument 类的几个常用的方法
- c# 常用的几个小方法
- js几个常用的方法
- JavaScript高级程序设计学习笔记3: Math对象比较常用的几个方法
- kotlin - Activity 生命周期和常用的几个方法
- 几个和com有关的常用方法
- JavaScript中字符串最常用的几个方法
- 几个Linux中文件查找常用技术和方法
- UITableView 常用的几个方法