zoukankan      html  css  js  c++  java
  • java jni调用 非托管 dll

    Step1:

     编写java类,e.g.:

    //filename: HelloWorld.java
    public class HelloWorld{
    	public native void  displayHelloWorld();
    	public native int add(int a,int b);
    	
    	static {
    		System.loadLibrary("hello");
    	}
    	public static void main(String[] args){
    		HelloWorld hw=new HelloWorld();
    		hw.displayHelloWorld();
    		System.out.println();
    		System.out.println(" 1+20= "+ hw.add(1,20) );
    	}
    }
    

    Step2:  javac HelloWorld.java

    Step3:  javah HelloWorld

    生成头文件如下:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class HelloWorld */
    
    #ifndef _Included_HelloWorld
    #define _Included_HelloWorld
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     HelloWorld
     * Method:    displayHelloWorld
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
      (JNIEnv *, jobject);
    
    /*
     * Class:     HelloWorld
     * Method:    add
     * Signature: (II)I
     */
    JNIEXPORT jint JNICALL Java_HelloWorld_add
      (JNIEnv *, jobject, jint, jint);
    
    #ifdef __cplusplus
    }
    #endif
    #endif
    

    Step4:用vc6建立一个win32 dll项目, 项目名hello

    Step5:

    tools->option->directory(标签)

    directories增加两个include 路径(具体看java的实际include路径):

    D:\java\jdk\jdk1.6.0_21\include

    D:\java\jdk\jdk1.6.0_21\include\win32

    Step6:

    新建hello.cpp

    #include <jni.h>
    #include "HelloWorld.h"
    #include <stdio.h>
    #include <windows.h>
    
    JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
      (JNIEnv *, jobject)
    
    {
    	printf("hello 中国 !@#$");
    }
    
    /*
    * Class:     HelloWorld
    * Method:    add
    * Signature: (II)I
    */
    JNIEXPORT jint JNICALL Java_HelloWorld_add
    (JNIEnv *, jobject, jint a, jint b){
    
    	return a+b;
    }
    
    
    
  • 相关阅读:
    Django admin 注册自己的路由
    django admin字段设置大全
    Python 装饰器原理
    css hack中遇到的一些问题
    阿里巴巴iconfont的正确使用方法
    css中position(absolute)与margin同时使用的情况
    关于IE浏览器不支持border-radius,box-shadow,text-shadow的解决方法
    大唐项目的总结
    js中的词法作用域
    easyui中datagrid自带loading效果
  • 原文地址:https://www.cnblogs.com/wucg/p/1956816.html
Copyright © 2011-2022 走看看