Java调用dll详细例子

1、编写一个java类文件

public class Test{

      public native void say();

} 
 

用native关键字修饰将被其它语言实现的方法

 

2、用javah命令生成.h文件
   a、把Test.java文件编译成class文件
   d、javah Test
   你会发现当前目录下多了一个Test.h文件

 

3、生成dll文件,在此以Dev c++ v5.0汉化版为例
a、新建一个c++语言的dll工程,名叫Testdll
b、把里面自动生成的两个文件移除
c、右击工程名,添加,选择Test.h确定
d、新建一个单元,假如名称为Testdll.cpp,把Test.h声明的方法实现

#include <stdio.h>
#include "com_xinfeng_intf_Animal.h"

JNIEXPORT void JNICALL Java_Test_say
  (JNIEnv *, jobject)
{
          printf("Hello World!\n");
} 

e、点击“运行”->“编译”,这时你会看到很多数据类型没被声明的错误,那是因为
com_xinfeng_intf_Animal.h使用了很多JAVA_HOME/include/jni.h文件自定义的数据类型,而jni.h又引
用了JAVA_HOME/include/win32/jni_md.h,这时你需要把jni.h和jni_md.h引入到工程里面来,左击工程名
“工程属性”->“文件/目录”->“包含文件目录”把JAVA_HOME/include和
JAVA_HOME/include/win32文件夹添加,确定后,再次编译一切正常,这时在工程
的目录下就找到testdll.dll文件,这样dll文件就生成了

4、调用dll文件
a、把testdll.dll文件复制在项目底下 (或JAVA_HOME/bin)
b、修改java文

public class Test{
   static{
         /*
         * 转入dll文件,在此不需要后缀名
         * 不同的系统库文件的后缀名是不一样的
         * 如windows是dll,而linux是so
         * jvm在不同系统会载入相应的库文件
         */
         System.loadLibrary("Testdll"); //
   }

   public static void main(String[] args) {
      Test test = new Test();
      test .say();
   } 

   public native void say();

} 
 

5、运行结果

Hello World!

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值