概述
今天公司由于需要调用大华的摄像头,但是大华提供的接口为C++的动态连接库DLL,在网上找了相关资料,发现有3种方法调用
1.通过java自带的jni,找了写资料学习了下,发现这条路太复杂,而且每次要改调用接口,都需要以大堆复杂的操作步骤,
看完后都觉得头大,不太适合。
2.第二种是使用JNative来调用,找了写资料,jar包也下到了,但是在调的过程中报错:“JNative library not loaded, sorry !”
安装网上找的资料说把JNativeCpp.dll复杂到C:WindowsSystem32目录下,问题依然存在,在复制到C:WindowsSysWOW64
目录下““JNative library not loaded, sorry !”小强还是存在,然而找到的1.4的版本,同样无法解决,经过多翻资料查找,分析可能是由于
JDK版本问题所导致,但是考虑到之前的项目都是用64位的JDK,换JDK不太现实,考虑用C#来调用DLL接口,然后发布为webServic
JAVA通过调用webServic来调用dll,但是公司里对c#熟悉的人不多,后期维护可能会有问题,基本就成我的事了。。这个是最后都不
行的保守方案吧。
3.jna第三种方案是貌似可以,而且也支持64位的JDK。看了一下貌似可以,最后经过调试完美调用成功
下面将整个过程记录下来
首先:下载jna-4.0.0.jar
然后将下载jna.jar报导入项目
第三部创建接口文件,该文件为interface接口。是libary的扩展,之后加载DLL文件,该DLL文件需要复制到项目的目录下
然后定义需要调用方法,不需要实现
最后通过测试调用该方法,调用成功
代码如下
接口文件代码
package com.xf.javacallcc; import com.sun.jna.Library; import com.sun.jna.Native; /** * @author mzn45 * @date 2021/4/1 */ public interface JavaJna extends Library { JavaJna instance = (JavaJna) Native.loadLibrary("DPSDK", JavaJna.class); public int DPSDK_Init(); }
测试代码
@Test void testJna(){ int a=JavaJna.instance.DPSDK_Init(); System.out.println(a); }
最后
以上就是坦率小熊猫为你收集整理的JAVA调用C++的DLL库的全部内容,希望文章能够帮你解决JAVA调用C++的DLL库所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复