有一个tcclib.dll文件,包含这么一个方法,
13. about()
說明: 顯示DLL 版本號碼
參數: 無我想使用Jni调用这个本地方法,写了一个java类public class TccPrint{
  public static void main(String[] args){
   new TccPrint().about();
  }
  public native void about();
  static{
     System.load("D:/tcclib.dll");
}
}这样对么?

解决方案 »

  1.   

    好像是没有后缀的, 加上后缀代码就没有移植性了,因为不同平台的动态链接库后缀不同。
    把dll放在和class一起的目录下,
    System.load("tcclib");
    就可以了。
      

  2.   

    如果tcclib.dll是一个别人提供给你的Dll文件,那么你不能直接Jni调用Java对Jni方法的命名是有要求的,你应该先写public class TccPrint{ 
      public static void main(String[] args){ 
      new TccPrint().about(); 
      } 
      public native void about(); 
      static{ 
    //    System.load("D:/tcclib.dll"); 先注释它了
      } 

    编译再用javah TccPrint生成的.h文件实现其中的方法编译一个新的dll,在这个dll中才去调用第三方提供的Dll这时候你再增加上面的System.load("tcclib");不需要路径,不需要后缀,Java会在Path中查找并自动根据操作系统添加后缀名称
      

  3.   

    4楼说的有道理。别人给你的dll是不能直接用的。要先编写一个dll作为桥梁
      

  4.   

    不用load,在eclipse里设置代码的native library目录就行了。
      

  5.   

    给LZ推荐一个JNI的使用,有源码和大量注释,LZ一定要试下:
    http://download.csdn.net/detail/txzsp/2285294