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 方便查看结果

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值