你的dll文件要符合jni中的外部类文件的规定,不是随便一个类文件都可以用的!

解决方案 »

  1.   

    如果要仔细研究,看看jdk文档中的jni板块,里面讲的很详细!
      

  2.   

    干脆你说详细点,要我怎么做,是不是要再做一个DLL文件,调用已经有的文件,然后再做JAVA文件调用我后写的这个DLL文件???
      

  3.   

    第一步:
    用最简单的例子举例:写一个类:
    class HelloWorld { 
        public native void displayHelloWorld();//定义本地方法     static { 
            System.loadLibrary("hello");//调入本地库 
        } 
         
        public static void main(String[] args) { 
            new HelloWorld().displayHelloWorld(); 
        } 

    这个类和普通的类文件没有什么区别,但要看到还是有些细微区别!你看出了么?
    然后编译javac HelloWorld.java  这时生成了HelloWorld.class文件
    接着javah -jni HelloWorld 生成HelloWorld.h头文件第二步:编写C文件并编译成DLL
    #include <jni.h> 
    #include "HelloWorld.h" 
    #include <stdio.h> 
    #include <windows.h> JNIEXPORT void JNICALL 
    Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj) 

        printf("Hello world!\n");//在这里实现java类中定义的方法 
        MessageBeep(0);//调用到win本地,会发一声响 
        return; 

    文件名随便取,但要以.c为后缀!
    然后用c或者c++的工具编译成dll文件,用vc或者其它工具生成!(不知道你的c是不是很好?)
      

  4.   

    晕老大,我还是不太明白,那个我要调用的dll文件是别人写好的啊。
      

  5.   

    别人在dll文件中写好了方法,然后我想用JAVA调用它啊
      

  6.   

    最后运行:java HelloWorld
    看到了什么结果么!
    注意dll文件的摆放位置,你可以放入和class文件的同一个目录,或者放入c:\windows\system32目录下,或者放在系统可以搜索到的路径如classpath中!
      

  7.   

    //第三方提供了一个DLL文件和一个VB/VC调用的例子,方法名都有了这个dll不能在java中直接用, 你需要写个jni的dll, 这个dll中调用第三方dll
      

  8.   

    to zhutouzip: 2星,该散分了吧,呵呵
      

  9.   

    你可以把刚才那个dll文件作为中间dll文件,在这个中间dll文件中调用别人写好的dll文件!然后在java中调用这个中间dll文件啊!
    至于怎么在刚才那个.c文件中调用另外一个dll文件,这是c/c++中的语法规则,