我是靠谱客的博主 坦率小熊猫,最近开发中收集的这篇文章主要介绍JAVA调用C++的DLL库,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天公司由于需要调用大华的摄像头,但是大华提供的接口为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库所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部