java调用dll动态库文件方法

本文详细介绍了如何在Java中调用DLL动态库文件,包括使用JNI声明库名和方法,生成C/C++头文件,实现C/C++函数,以及处理参数转换。通过实例展示了从Java声明到C/C++实现的全过程,强调了动态库调用的关键步骤和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  

     公司交代了一个任务,需要在本地项目中读取一个关于医保接口的动态库文件,文件名是SiInterface.dll,其中有两个需要实现的方法,

int INIT(char *pErrMsg) 和 int BUSINESS_HANDLE(  char*inputData,  char*outputData),前提是要进行动态库的调用

     在java中,最基本的动态库调用就是jni调用动态库的方法,

 简单介绍及应用如下:

   一、JAVA中所需要做的工作

   在JAVA程序中,首先需要在类中声明所调用的库名称,如下:

   static {

   System.loadLibrary(“goodluck”);

   }

  

   在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。

   还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具 体实现。如下:

   public native static void set(int i);

   public native static int get();

   然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。

   例如程序testdll.java,内容为:

   public class testdll

   {

   static

   {

   System.loadLibrary("goodluck");

   }

   public native static int get();

   public native static void set(int i);

   public static void main(String[] args)

   {

   testdll test = new testdll();

   test.set(10);

   System.out.println(test.get());

   }

   }

  

   用javac testdll.java编译它,会生成testdll.class。

   再用javah testdll,则会在当前目录下生成testdll.h文件,这个文件需要被C/C++程序调用来生成所需的库文件。

   二、C/C++中所需要做的工作

   对于已生成的.h头文件,C/C++所需要做的,就是把它的各个方法具体的实现。然后编译连接成库文件即可。再把库文件拷贝到JAVA程序的路径下面,就可以用JAVA调用C/C++所实现的功能了。

   接上例子。我们先看一下testdll.h文件的内容:

   /* DO NOT EDIT THIS FILE - it is machine generated */

   #include

   /* Header for class testdll */

   #ifndef _Included_testdll

   #define _Included_testdll

   #ifdef __cplusplus

   extern "C" {

   #endif

   /*

   * Class: testdll

   * Method: get

   * Signature: ()I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值