请问在 JAVA Application 怎么调用其他程序写的.DLL动态连接库????请给实例说明,谢谢!小弟在线等,来者给分。

解决方案 »

  1.   

    可以用jawin,搜索下很多资料和样例的。
      

  2.   

    native method就可以用来实现
    网上很多的
    搜索一下看
      

  3.   

    Java Native Interface(JNI)
    一门学问啊。可以看看Addison Welsey出版的The Java Native Interface书
      

  4.   

    一、JAVA中所需要做的工作 
      在JAVA程序中,首先需要在类中声明所调用的库名称,如下: 
    static { 
    System.loadLibrary(“goodluck”); 
    }  在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。   还需对将要调用的方法做本地声明,关键字为native。且只需要声明,而不需要具体实现。如下: 
    public native static void set(int i); 
    public native static int get();  然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。 .
    .
    .
    .
    http://www.pconline.com.cn/pcedu/empolder/gj/java/0506/642328.html
      

  5.   

    在本实例中,包括下面几个类:
    HelloNative.java:实用类,提供一个静态本地方法greeting(),打印出一个消息串。其中greeting方法调用了下面的本地代码。
    HelloNative.c:本地实现代码。
    HelloNativeTest.java:应用主文件,调用HelloNative实用类的greeting()方法。
    HelloNative.java
    //HelloNative.java 
    class HelloNative 

        public native static void greeting(); 
        static  
        { 
            //HelloNative是下面将由HelloNative.c生成的dll文件。 
    System.loadLibrary("HelloNative");  
        } 
    }; 编译上面的.java文件后,在生成的.class目录下,使用javah命令生成HelloNative.class的C头文件:
    javah HelloNative
    HelloNative.h生成的HelloNative.h文件如下:/* DO NOT EDIT THIS FILE - it is machine generated */ 
    #include <jni.h> 
    /* Header for class HelloNative */ #ifndef _Included_HelloNative 
    #define _Included_HelloNative 
    #ifdef __cplusplus 
    extern "C" { 
    #endif 
    /* 
     * Class:     HelloNative 
     * Method:    greeting 
     * Signature: ()V 
     */ 
    JNIEXPORT void JNICALL Java_HelloNative_greeting 
      (JNIEnv *, jclass); #ifdef __cplusplus 

    #endif 
    #endif 
    HelloNative.c
    拷贝生成的HelloNative.h,另存为HelloNative.c,并填充JNICALL Java_HelloNative_greeting方法体,得到下面的
    HelloNative.c: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> 
    /* Header for class HelloNative */ 
    #ifndef _Included_HelloNative #define _Included_HelloNative 
    #ifdef __cplusplus extern "C" { #endif 
    /* 
     * Class:     HelloNative 
     * Method:    greeting 
     * Signature: ()V 
     */ 
    JNIEXPORT void JNICALL Java_HelloNative_greeting 
      (JNIEnv * env, jclass cl) 

        printf("Hello, Native World!\n"); 
    } #ifdef __cplusplus     } #endif 
    #endif 
    使用Windows自带的c/c++编译器,编译上面的HelloNative.c:cl -Id:\j2sdk1.4.1\include -Id:\j2sdk1.4.1\include\win32 -LD HelloNative.c -FeHelloNative.dll执行这条命令后将生成HelloNative.dll文件。这个DLL动态链接库就是下面我们在HelloNative.java文件中调用的本地文件。如果是在Unix/Linux下,请使用相应操作系统的c编译器,生成的库文件是HelloNative.so。
    开始运行吧至此,我们编写的Windows平台上的本地库文件和Java文件已经准备就绪,下面写一个简单的测试程序来测试一下本地调用吧。
    class HelloNativeTest  

        public static void main(String[] args)  
        { 
            HelloNative.greeting(); 
        } 

    编译、运行这个程序,将打印出Native版的:
    Hello, Native World!也许你认为这并没有什么特别,但如果你知道这个消息串是使用你自己写的C库文件中调用生成的时候,你就会有知道这有着非常重大的意义。就好像寻宝者在人迹罕至的荒山之中,突然看到一块史前陶片,陶片本身并没有什么特别,但这,也许已经为你启开了宝藏之门。