zoukankan      html  css  js  c++  java
  • Windows平台上的JNI学习>MyJni.java

    一、首先是java源文件 MyJni.java

    package org.mizhongqin.jni;
    
    public class MyJni {
    	//native method
    	public native void display();
    	public native double sum(double x,double y);
    	static {
    		System.loadLibrary("Myjnid");
    	}
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		new MyJni().display();
    		System.out.println(new MyJni().sum(1.0, 2.0));
    		
    
    	}
    
    }
    

     二、生成 MyJni.class 文件, org_mizhongqin_jni_MyJni.h头文件

        

    在D:\workspace\JAVA\src\org\mizhongqin\jni\ 下可以看到 MyJni.class 文件

    在D:\workspace\JAVA\src\可以看到org_mizhongqin_jni_MyJni.h 文件,内容如下:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class org_mizhongqin_jni_MyJni */
    
    #ifndef _Included_org_mizhongqin_jni_MyJni
    #define _Included_org_mizhongqin_jni_MyJni
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     org_mizhongqin_jni_MyJni
     * Method:    display
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_org_mizhongqin_jni_MyJni_display
      (JNIEnv *, jobject);
    
    /*
     * Class:     org_mizhongqin_jni_MyJni
     * Method:    sum
     * Signature: (DD)D
     */
    JNIEXPORT jdouble JNICALL Java_org_mizhongqin_jni_MyJni_sum
      (JNIEnv *, jobject, jdouble, jdouble);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    三、然后是 C/C++源文件 MyJni_c.cpp

    //必须的头文件jni.h
    
    #include <jni.h>
    
    //导入我们需要实现的本地方法
    
    #include "org_mizhongqin_jni_MyJni.h"
    
    #include <stdio.h>
    
     
    
    JNIEXPORT void JNICALL Java_org_mizhongqin_jni_MyJni_display
    
      (JNIEnv *env, jobject obj)
    
    {
    
        printf("Hello World tom!!");
    
        return;
    
    }
    
     
    
    JNIEXPORT jdouble JNICALL Java_org_mizhongqin_jni_MyJni_sum
    
      (JNIEnv *env, jobject obj, jdouble a, jdouble b)
    
    {
    
        return a + b;
    
    }

    四、生成DLL文件

    D:\Program Files\Java\jdk1.6.0_21\include\jni.h

    D:\Program Files\Java\jdk1.6.0_21\include\win32\jawt_md.h

    D:\Program Files\Java\jdk1.6.0_21\include\win32\jni_md.h

    注意:

    上面是JDK安装路径下include目录下的jni.h和 win32目录下的jawt_md.h jni_md.h 三个文件

    把jni.h jawt_md.h jni_md.h 拷贝到D:\Program Files\Microsoft Visual Studio 10.0\VC\include 即Visual Studio 安装目录下的 \VC\include目录中

    同时把第二步生成的org_mizhongqin_jni_MyJni.h拷贝到 org_mizhongqin_jni_MyJni.h 便于执行cl 命令,即:

    结果正式生成Myjnid.dll文件

    五、配置Java工程的DLL库路径 ,运行MyJni.java

    运行结果:

     

  • 相关阅读:
    mysql同步之otter/canal环境搭建完整详细版
    Linux安装aria2
    mysql多源复制(多主一从)配置
    分布式调度框架TBSchedule使用方法
    hbase shell插入根据条件查询数据
    hive内部表&外部表介绍
    Canal( 增量数据订阅与消费 )的理解及应用
    tidb入门
    ES命令
    java8新特性
  • 原文地址:https://www.cnblogs.com/mizhongqin/p/window_JNI.html
Copyright © 2011-2022 走看看