zoukankan      html  css  js  c++  java
  • 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%in

    JAVA_HOME

    D:ProgramFilesJavajdk1.6.0_10

    CLASSPATH

    .;%JAVA_HOME%lib;%JAVA_HOME%in.

    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
    ");
    
    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

  • 相关阅读:
    (原)学以致用:用数学公式'幂函数'支持生产经营分析
    CString 成员函数用法大全
    致hr新人的一封信
    [恢]hdu 2560
    [恢]hdu 1907
    [恢]hdu 1267
    [恢]hdu 2554
    [恢]hdu 1329
    [恢]hdu 2317
    [恢]hdu 2555
  • 原文地址:https://www.cnblogs.com/adong7639/p/3959531.html
Copyright © 2011-2022 走看看