java JNI入门一
来源:互联网 发布:silhouette软件 编辑:程序博客网 时间:2024/06/05 01:07
JAVA基础之理解JNI原理(转载+修改)
JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与平台无关这一重大优点的不足,在JAVA实现跨平台的同时,也能与其它语言(如C、C++)的动态库进行交互,给其它语言发挥优势的机会。
有了JAVA标准平台的支持,使JNI模式更加易于实现和使用。在此总结了下面这个知识图:
环境说明:ubuntu 11.04
第一步:
程序1 src/com/magc/jni/HelloWorld.java
第二步:
第三步:
(上面的命令为一行,不要直接复制,libHello.so 为java中System.loadLibrary("Hello")的名称相对应
第四步骤
声明库地址
编译成功
yy@yy:~/androd_jin/hellowrold/src$ java -Djava.library.path=. com.magc.jni.HelloWorld
From jni_helloworldImpl.cpp :Hello world !
第一步:
程序1 src/com/magc/jni/HelloWorld.java
class HelloWorld{private native void print();public static void main(String[] args){new HelloWorld().print();}static{System.loadLibrary("Hello");//后来生成库时候,为此libHello.so}}
编译HelloWorld.java
在命令行中运行如下命令:
javac HelloWorld.java
第二步:
生成HelloWorld.h
在命令行中运行如下命令:
javah -jni HelloWorld
在当前文件夹中会生成HelloWorld.h。打开HelloWorld.h将会发现如下代码:
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class HelloWorld */#ifndef _Included_HelloWorld#define _Included_HelloWorld#ifdef __cplusplusextern "C" {#endif/* * Class: HelloWorld * Method: print * Signature: ()V */JNIEXPORT void JNICALL Java_HelloWorld_print //Java_HelloWorld_print此函数为后来c文件中申明使用,要一致 (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
实现HelloWorld.c
创建HelloWorld.c文件输入如下的代码:
#include <jni.h>#include <stdio.h>#include "HelloWorld.h"JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj){printf("Hello World!\n");}
第三步:
编译生成libHelloWorld.so
在Linux下执行如下命令来完成编译工作:
cc -I/usr/lib/jvm/java-6-sun/include/linux/ -I/usr/lib/jvm/java-6-sun/include/ -fPIC -shared -o libHello.so HelloWorld.c
(上面的命令为一行,不要直接复制,libHello.so 为java中System.loadLibrary("Hello")的名称相对应
第四步骤
声明库地址
java -Djava.library.path='.' HelloWorld
编译成功
yy@yy:~/androd_jin/hellowrold/src$ java -Djava.library.path=. com.magc.jni.HelloWorld
From jni_helloworldImpl.cpp :Hello world !
- java JNI入门一
- JNI学习(一),入门
- JNI入门----(一)
- JNI入门(一)
- 【java&&jni】jni入门篇
- Java Jni入门(一):Hello Jni(在Java中调用C库函数)
- JAVA jni入门
- java JNI入门
- java jni 初步入门
- JNI入门之HelloWorld(一)
- JNI学习一(入门篇)
- jni入门学习笔记(一)
- jni入门学习笔记(一)
- jni入门学习笔记(一)
- Android JNI入门搭建环境(一)
- JNI 入门学习笔记(一)
- JNI之C语言(一)--快速入门
- 入门JNI需要知道的(一)
- jsp中<html:select>标签的用法
- C# 经纬度转换 和 时间转换
- 使用cookie
- [linux][sendmail][error]DSN: Data format error
- ESRI.ArcGIS.AnalysisTools的使用
- java JNI入门一
- 取得IOS设备型号
- pthread_create线程创建的过程剖析
- 修改图片大小
- 一个函数实现调节录音控制麦克风输入音量
- GridControl主从表的数据绑定以及从表事件
- Flex使用ModuleLoader请记住在主程序中加入以下代码
- 如何安装MATLAB工具箱-总结
- C++ GUI Qt4学习笔记(七)