参考网址:
测试jni程序
http://blog.163.com/ct2007_km/blog/static/8550514220123273392591/
http://www.cnblogs.com/youxilua/archive/2011/09/16/2178554.html
安装Mingw
第一步 安装JAVA
1.1 到Oracle的官网可以下载JDK安装包,安装好后,需要正确配置环境变量。
1.2 JAVA环境变量设置
在环境变量中添加下面的变量
PATH
%JAVA_HOME%\bin
JAVA_HOME
D:\ProgramFiles\Java\jdk1.6.0_10
CLASSPATH
.;%JAVA_HOME%\lib;%JAVA_HOME%\bin.
1.3 测试Java配置是否成功
运行java, javac, java -vesion
如果没有出错,说明配置成功
1.4测试代码Java
简单的hellworld代码
public class main{ // 程序的入口 public static void main(String args[]){ // 向控制台输出信息 System.out.println("欢迎java01班的同学"); } }
Javac main.java
Java main
之前在测试后面的代码,出现一堆问题,找了半天居然是Java环境变量配置没有成功,运行java, javac, java –vesion都显示没有问题,Eclipse下面也可以正常编译Java代码,浪费了不少时间。
第二步 安装MinGw
2.1 百度或者Google可以下载MinGw安装
2.2配置MinGw环境变量。
在安装过程中自动设置好,在cmd中输入gcc测试一下,假如显示gcc: no input file ,则安装已成功。否则,自己把c:/mingw/bin的目录手动加到环境变量中,方法如下:
1.右键“我的电脑”==>属性==>“高级”==>“环境变量”
2.在用户变量中,假如有path变量,就选择“编辑”,在原先值后面加个分号,在把MinGW的bin目录加上就好了。假如没有path就自己“新建”一个,再把MinGW的bin目录加上。
3.测试方法同上,over
2.3 MinGW进行编译和创建一个终端应用程序
下面是一个简单的c语言程序的代码示例,
hello.c的文件中试试看:
#include <stdio.h> int main(int argc, char **argv) { printf ("Hello\n"); return (0); }
Cmd窗口:
gcc –o hello hello.c
hello
第三步 本地测试
3.1 编写Java程序
MyJni.java
public class MyJni { //使用JNI的关键字native //这个关键字决定我们那些方法能在我们的C文件中使用 //只须声明,不必实现 public native void display(); public native double sum(double x,double y); //这个是到时候调用我们写好的C文件 //现在用不上 static { System.loadLibrary("MyJni"); } public static void main(String[] args) { //到时候测试用方法现在用不上 new MyJni().display(); System.out.println(new MyJni().sum(2.0, 3.0)); } }
编译 javacMyJni.java生成MyJni.class文件
3.2 由class文件生成头文件
javah -classpath . -jni MyJni
3.3 编写本地的c代码
MyJni.c
//必须的头文件jni.h #include <jni.h> //导入我们需要实现的本地方法 #include "MyJni.h" #include <stdio.h> JNIEXPORT void JNICALL Java_MyJni_display (JNIEnv *env, jobject obj) { printf("Hello World tom!!"); return; } JNIEXPORT jdouble JNICALL Java_MyJni_sum (JNIEnv *env, jobject obj, jdouble a, jdouble b) { return a + b; }
3.4 编译c代码
gcc -shared -Wl,--kill-at –o MyJni.dll MyJni.c
3.5 运行 java MyJni
Hello World tom!! 5.0