jni 编程简单例程
来源:互联网 发布:android javascript 编辑:程序博客网 时间:2024/06/15 21:27
机器环境:Centos 6.5 x64
jdk版本: jdk 1.7
首先编写一个简单的java函数,函数名称为Hello.java
class Hello{ public native void add(int a,int b); static{ System.loadLibrary("hello"); } public static void main(String[] args) { new Hello().add(3,4); }}
使用javac将这个文件编译成字节码(就是.class文件)
# javac Hello.java
此时,这个目录中便有2个文件(Hello.java和Hello.class)
接着生成.h文件。
# javah -jni Hello
这个命令将会生成Hello.h文件,内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class Hello */#ifndef _Included_Hello#define _Included_Hello#ifdef __cplusplusextern "C" {#endif/* * Class: Hello * Method: add * Signature: (II)V */JNIEXPORT void JNICALL Java_Hello_add (JNIEnv *, jobject, jint, jint);#ifdef __cplusplus}#endif#endif
下面编写一个c程序,内容如下,文件名Hello.c
#include <stdio.h>#include "./Hello.h"JNIEXPORT void JNICALL Java_Hello_add (JNIEnv *env, jobject obj, jint a, jint b){ printf("a + b = %d\n",a+b);}
接着使用gcc工具将这个c文件编译成动态库,编译之前首先要将jdk安装目录中的jni.h和jni_md.h文件复制到/usr/include中。否则gcc编译时将无法找到这两个头文件。
# cp /usr/java/jdk1.7.0_40/include/jni.h /usr/include# cp /usr/java/jdk1.7.0_40/include/linux/jni_md.h /usr/include
接着执行gcc编译命令:
# gcc -shared -fPIC -o libhello.so Hello.c
编译完成后。将当前目录加入到LD_LIBRARY_PATH环境变量中。
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./
# java Hello
0 0
- jni 编程简单例程
- python 串行编程简单例程
- 简单JNI编程实现
- Android jni编程简单编程
- Linux 网络编程 简单例程1
- Android JNI例程
- java例程练习(网络编程[简单网络连接试验])
- java例程练习(网络编程[简单双向通信试验])
- java例程练习(网络编程[简单UDP通信试验])
- 【unix网络编程】第一章简单的时间获取例程
- Android响应式编程RxAndroid(1):简单例程
- JNI和NDK编程的简单了解
- windows7 android studio jni 例程
- 简单的Winsock例程
- Android Camera简单例程
- FTP客户端简单例程
- STM32简单例程调试
- i2c例程 简单易懂
- linux下安装qq(苦海无涯回头是岸)
- (EM算法)The EM Algorithm
- 幂方分解 (vip)
- 就是这么“高大上”!20个最受欢迎的Linux命令
- Android 动画 总结
- jni 编程简单例程
- 驱动方法不能改变任何事情
- JS中Null与Undefined的区别
- pythonchallenge level5--python2.7
- oj 矩形类派生立体类
- javascript解析xml文件
- android camera(二):摄像头工作原理、s5PV310 摄像头接口(CAMIF)
- 硬盘写缓存
- iOS中的UILabel