Java教程

java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法

本文主要是介绍java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我们经常会遇到需要java调用c++的案例,这里就java调用DLL本地动态链接库两种方式,和加载过程中遇到的问题进行详细介绍

1、通过System.loadLibrary("dll名称,不需要后缀名")

例如:

  System.loadLibrary("StreamParser");
    System.loadLibrary("StreamPackage");
    System.loadLibrary("StreamConvertor");

那么这样写了之后你运行时就会发现,还是调用不了,因为这种加载dll的方式会自动到jre的lib文件夹下搜索这些本地动态链接库,那么没找到就肯定会报错,not found library!

这里用eclipse举个例子:

eclipse要这样设置:右键项目-->选择proerties选项-->找到java build path -->选中右边框中的Source选项卡,展开-->选中 native library location ,点击右边的edit按钮,就可以设置本地dll的路径了,这里我的dll放在项目中的lib文件夹下就可以点击workspace设置加载项目路径下的dll。如下图:



2、通过System.load("这里填写dll文件的完整路径")加载文件路径方式加载本地链接库

上一种加载dll的方式,你会发现不管是打成jar包还是war包都是不行的,那么怎么办呢,这时候第二种方式帮你解决这个问题,按照文件路径加载dll。

比如我是这样做的,我先将所有要加载的dll文件路径写在loadConf.proeprties文件中,在加载时读取这个 配置文件中的dll路径并且通过System.load(“文件路径”)加载本地动态链接库。

System.load(fileName);


总结:

第二种方式加载不论最终打包成jar包还是war包,只要在loadConf.proeprties中写好dll的路径就可以正确加载调用本地链接库,而不再会出现第一种出现的问题。


这篇关于java中调用本地动态链接库(*.DLL)的两种方式详解和not found library、打包成jar,war包dll无法加载等等问题解决办法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!