您的位置:首页 > 移动开发 > Android开发

JNI实例以及分析

2012-04-06 12:54 225 查看
JNI实例以及分析
最近在研究Android下面的JNI,所以本地先创建一个实例来进行分析,然后提出一些问题然后逐个分析

第一部分
HelloWorld.java

class HelloWorld
{
static{
System.loadLibrary("HelloWorld");
}

public static void main(String[] args)
{
new HelloWorld().print();
}
private native void print();
}

问题列表

1 为什么需要static去加载动态库?

2 为什么print()函数需要这样使用?

helloworld.c 

#include "HelloWorld.h"

JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}

make.sh

#!/bin/sh
javac HelloWorld.java
javah -jni HelloWorld

if [ -e ${JAVA_HOME} ] ; then
gcc -I ${JAVA_HOME}/include -I ${JAVA_HOME}/include/linux -shared helloworld.c -fPIC -o libHelloWorld.so
fi
java HelloWorld

问题列表:

1 gcc下面-I 如果包含有多个路径该如何显示?

     通过实验,可以得出

2 gcc编译的-fPIC的意义是什么 ?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jni java gcc android string