JAVA调用C++的DLL库

今天公司由于需要调用大华的摄像头,但是大华提供的接口为C++的动态连接库DLL,在网上找了相关资料,发现有3种方法调用

1.通过java自带的jni,找了写资料学习了下,发现这条路太复杂,而且每次要改调用接口,都需要以大堆复杂的操作步骤,

  看完后都觉得头大,不太适合。

2.第二种是使用JNative来调用,找了写资料,jar包也下到了,但是在调的过程中报错:“JNative library not loaded, sorry !”

  安装网上找的资料说把JNativeCpp.dll复杂到C:\Windows\System32目录下,问题依然存在,在复制到C:\Windows\SysWOW64

目录下““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);
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值