java + jni + mingw实例开发(基于命令行窗口模式)


 java+ jni + mingw

参考网址:

http://wenku.baidu.com/link?url=9aQ88d2ieO7IgKLlNhJi5d3mb3xwzbezLPzSIX3ixz4_j56LLrv9dvkhO3d2VkWR9x9OpD-JPh0SmzxOn1PdoG8MLwPSYjO3kywFLO9b5bS

测试jni程序

http://blog.163.com/ct2007_km/blog/static/8550514220123273392591/

http://www.cnblogs.com/youxilua/archive/2011/09/16/2178554.html

安装Mingw

http://wenku.baidu.com/link?url=Tvq8Y0kZuGV8QJ5B7ihyq8sdYtaHaDoY4wHIyXmDGGRnEJnE6vsPwgrRRC4pYCQk5kbj1wSmwFgfcUbUL8tILoUBTIbVy2ZNoZjIkW5B-ES

 

第一步 安装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班的同学");

  }

}

cmd窗口执行:

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变量,就选择“编辑”,在原先值后面加个分号,在把MinGWbin目录加上就好了。假如没有path就自己“新建”一个,再把MinGWbin目录加上。

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

你可能感兴趣的:(MinGW)