我有两个类://class 1package untitled26;
public class OS {
  //声明调用的win32动态链接库
  static{
    System.loadLibrary("GDI32");
  }
  //动态链接库内的方法做本地声明
  public static final native int GetDC(int hWnd);
  public static final native int ReleaseDC(int hWnd,int hDC);
}//class 2package untitled26;
import untitled26.OS;
public class Holder {
  public static void main(String[] args){
    int mydc=OS.GetDC(0);
    OS.ReleaseDC(0,mydc);
  }
}执行Holder的时候老是报错:
java.lang.UnsatisfiedLinkError: GetDC at untitled26.OS.GetDC(Native Method) at untitled26.Holder.main(Holder.java:5)Exception in thread "main" 哪位高手指点一下应该怎么改才对?谢谢。

解决方案 »

  1.   

    GetDC 这个DLL 必须在JVM可以加载的路径里面
      

  2.   

    GetDC是GDI32.dll里的函数。GDI32.dll在system32文件夹里,jvm默认是查找这个文件夹的。我把这个路经手动夹到requiredlibrary里面还是不行。况且,从报的错来看,不是找不到GetDC这个函数,而是参数不耦合。但我看不出来哪里有问题啊
      

  3.   

    是这样的情况那你要自己写一个C/C++的程序调用GetDC然后生成自己的DLL你现在是要调用已经存在的DLL ,必须要对DLL进行名称名称重整
    以便符合JNI规范