java调用本地方法

        这几天研究了下 JAVA调用C ,在不懂C的情况下研究这个实在让人郁闷,还好总算搞出来了。

  JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。

 

下面来说说如何实现 JAVA调用C

 

首先来说JAVA部分

 

JAVA 部分

   1、  加载动态库(dll文件

         static {
          System.loadLibrary(“dll库文件
”);
         }

   2、   调用的方法做本地声明,关键字为native  方法不用实现 C实现

     public native void displayHelloWorld();

 

   3、  执行javac HelloWorld.java (以下java类的命名都以HelloWorld命名)

   4、  执行javah –classpath . HelloWorld  生成 .h”文件. 把这个“.h”文件交给C实现。

 

 

C方面操作

 

     用vc++做为编译器具体操作如下:

 

         1、  创建项目—>win32 项目—>应用类型选择dll

         2、  C类库不包括与java通信的库类,将JNI加载到C库类中 也就是 JAVA jdk include文件夹的所有文件C 编译器 VC\include

 

        3、  实现HelloWorld.h接口 生成 dll文件(生成的dll文件用replase下的 否则会产生java.lang.UnsatisfiedLinkError 或者乱码情况 )。

        4、  把生成的dll文件拷贝到和class文件一个目录下 运用 java 

 

     注:提供可运行jnirun.bat 方便查看结果

 

 

你可能感兴趣的:(java基础)