Jni C Linux平台第一个实例

2014-11-24 09:19:55 · 作者: · 浏览: 0

1、平台:Linux


2、安装jdk,gcc


3、编写java代码


HelloWorld.java


public class HelloWorld


{


private native void print();



static


{


System.loadLibrary("HelloWorld");


}



public static void main(String[] args)


{


new HelloWorld().print();


}


}


4、编译Java代码


javac HelloWorld.java


5、生成头文件


javah -jni HelloWorld


6、头文件如下


/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);


#ifdef __cplusplus
}
#endif
#endif


7、编写c文件


#include "HelloWorld.h"
#include

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


8、将c文件编译成linux平台下的动态连接库,这里需要注意,linux平台动态链接库的命名方法(lib***.so)


gcc -I$JAVA_HOME/include -I$JAVA_HOME/include/linux -c HelloWorld.c


使用上面的命令编译,生成.o文件,再将.o文件打包成.so文件


gcc -shared -o libHelloWorld.so HelloWorld.o


生成libHelloWorld.so动态链接库文件


9、设定动态库地址


export LD_LIBRARY_PATH=libHelloWorld.so所在目录 :$LD_LIBRARY_PATH


10、运行代码


java HelloWorld