这问题我提前还真遇到过,但是忘记怎么解决的了,我是按一个教程的方法做的,你可以在网上找,找不到就把邮件留这,我发你就是,按那个例子是能成功的,我在sun上用的,windows我没试。我同事试过也是成功的

解决方案 »

  1.   

    Incorrect library name or library path.
      

  2.   

    能否给一个在vaj下调用dll的例子?多谢各位!
      

  3.   

    把dll放到你的working directory下
      

  4.   

    我这里有一个例子,你可以参考一下:
    在本实例中,包括下面几个类:
    HelloNative.java:实用类,提供一个静态本地方法greeting(),打印出一个消息串。其中greeting方法调用了下面的本地代码。
    HelloNative.c:本地实现代码。
    HelloNativeTest.java:应用主文件,调用HelloNative实用类的greeting()方法。//: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文件如下:
    /* 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.h,另存为HelloNative.c,并填充JNICALL Java_HelloNative_greeting方法体,得到下面的HelloNative.c文件
    //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。(这里jdk的安装路径为d:\j2sdk1.4.1)至此,Windows平台上的本地库文件和Java文件已经准备就绪,下面写一个简单的测试程序来测试一下本地调用吧。
    //: HelloNativeTest.java
    class HelloNativeTest {
      public static void main(String[] args) {
        HelloNative.greeting();
      }
    }
    编译、运行这个程序,将打印出Native版的:
    Hello, Native World!
      

  5.   

    下面的怎么操作:
    使用Windows自带的c/c++编译器,编译上面的HelloNative.c:
    cl -Id:\j2sdk1.4.1\include -Id:\j2sdk1.4.1\include\win32 -LD HelloNative.c -FeHelloNative.dll
      

  6.   

    to  pm2357(学思不罔):
    在dos模式下敲入上面的命令,就能在当前目录生成HelloNative.dll文件了。
      

  7.   

    to Danger2000(飞鱼) :
    C:\>cl
    'cl' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
      

  8.   

    哎呀,那里这么复杂啊,就是没找到DLL吧,你把它放到你的java.library.path里就行了(比如说system32目录),要看这个路径是哪里,可以用
    System.out.println(System.getProperties());
      

  9.   

    Danger2000(飞鱼)的是正确的,更多详细内容你可以查看java.sun.com中搜索JNI