1. java文件中指明需要调用的本地方法和需要加载的dll文件名。
2. 从class文件生成.h文件 : javah –jni classname
3. 建立Dll工程,添加1生成的.h文件以及jni.h(jdk\include)、jni_md.h  (jdk\include\win32)文件到工程目录中,并且把他们添加到VC编译器中。
4. 在cpp中实现生成的.h中的本地方法(方法前面加extern “C” …)
5. 编译工程,生成Dll文件
6. 拷贝Dll到系统路径,或者类路径中
7. 执行class文件可以得到结果。Example:
class Show {
  public static void main(String [] args) {
    Show app = new Show();
    app.show("China");
  }
  private native void show(String msg);
  static {
    System.loadLibrary("msg");
  }
}执行:
javah –jni classname生成:.h的头文件。下面的工作在VC中执行,按照上面的讲解步骤

解决方案 »

  1.   

    假如我需要调用的DLL是已经生成了的,不能修改,也行吗?
      

  2.   

    当我执行javah –jni classname时,出现“**class NOT FOUND”!
    请问这是什么原因?
      

  3.   

    不行,首先生成java的.h文件,然后将.h文件增加到vc的编辑器中,然后生成.dll
    文件才有效
      

  4.   

    我的applet调用DLL,在JBULIDER环境下可以,但一拿到IE下去运行,就会出现
    安全性问题,而且我对CLASS文件已经签名,但在IE下JRE好像不认识一下,根本
    就不管我这个认证?我该怎么办?