dhclient命令找不到(找不到dhconfigsdk.dll)

dhclient命令找不到(找不到dhconfigsdk.dll)svg xmlns http www w3 org 2000 svg style display none svg

大家好,我是讯享网,很高兴认识大家。



 <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p><strong>运行之前&#xff0c;最好浏览一遍文档&#xff0c;比如操作系统与以及文件保持一致性。而且对你调试代码也颇有帮助&#xff0c;返回一些错误码在官方提供的文档有说明参照</strong>。例如&#xff1a;下运行64位和64位文件&#xff0c;也可以运行32位和32位的文件。</p> 

讯享网

目录

==================================================================

01、环境的确认

02、引入项目

03、解析问题

04 、引入工具类

05 、解决无法加载HCNetSDK.dll文件

正文

==================================================================

官方文档直通车:https://www.hikvision.com/cn/download_61.html

在这里插入图片描述
讯享网

官方文档给出的【注意事项

----------------------------------------------------------------------------------------------------------------------------------------

一、 更新设备网络时,开发包【库文件】里的

HCNetSDK.dll、

HCCore.dll、

PlayCtrl.dll、

SuperRender.dll、

AudioRender.dll、

HCNetSDKCom文件夹、

ssleay32.dll、

libeay32.dll、

hlog.dll、

hpr.dll、

zlib1.dll、

log4cxx.properties

等文件均要加载到程序里面,【HCNetSDKCom文件夹】(包含里面的功能组件库文件)需要和HCNetSDK.dllHCCore.dll一起加载,放在同一个目录下,且HCNetSDKCom文件夹名不能修改

二、 如果自行开发软件不能正常实现相应功能,而且程序没有指定加载的dll库路径,请在程序运行的情况下尝试删HCNetSDK.dll。如果可以删除,说明程序可能调用到系统盘Windows->System32目录下的dll文件,建议删除或者更新该目录下的相关dll文件;如果不能删除,dll文件右键选择属性确认SDK库版本。

三、如按上述步骤操作后还是不能实现相应功能,请根据NET_DVR_GetLastError返回的错误号判断原因

-----------------------------------------------------------------------------------------------------------------------------------------

基于海康开发提供的之版运行,基于版本写的,此时是官方提供的最新版本

在这里插入图片描述

环境的确认


注意我下载的是64位的SDK,操作系统win10_x64,jdk_x64熟读官方文档真的很重要,会少走很多弯路JDK和SDK版本必须一致,同是32位或者64位。如果不统一,遇到问题我也没辙。

在这里插入图片描述

引入项目到编辑器


使用或者都行,看个人喜好嘛。注意必须要将包和库文件怎么引入我相信大家肯定知道,和引入后代码就不会报红了。引入这里面指定的也能运行起来,没必要将整个库文件引入。

eclipse引入项目的目录结构,我直接新建了sdk文件夹放入指定的库文件

在这里插入图片描述

IDEA引入项目的目录结构,这是将整个库文件完全引入时做的测试

在这里插入图片描述

遇到问题并解析问题


最开始你会看到这个不友好的警告,一个很严重的java异常

在这里插入图片描述

运行java版demo遇到的问题一

Exception in thread “main” java.lang.UnsatisfiedLinkError: Unable to load library ‘HCNetSDK’: ÕҲ»µ½ָ¶¨

在这里插入图片描述

解析问题一:不难看出来,无法去加载库文件。这时你分析一下这个报错的代码提示,可以看出来定位到这个类的第66行,那肯定是找不到接口里提供的的实例。再向上看定位分析,找不到的路径,定位到第36行。遇到报错不要怕,重要的是学会分析问题所在并去解决掉,领导也喜欢善于解决问题的。

运行java版demo遇到的问题二

Exception in thread “main” java.lang.UnsatisfiedLinkError: Unable to load library ‘PlayCtrl’: ÕҲ»µ½ָ¶¨

在这里插入图片描述

解析问题二:不难看出来,无法去加载库文件。这时你分析一下这个报错的代码提示,可以看出来定位到这个类的第67行,那肯定是找不到接口里提供的的实例。再向上看定位分析,找不到的路径,定位到第3069行。遇到报错不要怕,重要的是学会分析问题所在并去解决掉,领导也喜欢善于解决问题的。

工具类编写


解析完问题后,我们了解到无法加载这个两个库文件,下面给出解决方案:我采用的是编写工具类方法来解决找不到路径的问题。

代码如下

//获取DLL文件路径

public class GetDLLPath {

//路径

public static String DLL_PATH;

static{

//通过getPath方法去拿路径

String path = GetDLLPath.class.getResource(“/”).getPath()

.replaceAll(“20%”, " ").substring(1);

// 这个是解决打包找不到路径的写法,但是目前引入demo运行用不上,我就注释掉了

// String[] ph = path.split(“/”);

// StringBuilder sb = new StringBuilder();

// for(int i= 0;i < ph.length-2;i++){

// sb.append(“/”).append(ph[i]);

// }

// //解决打包加载类找不到路径的问题,这里编写你自己存放的路径

// sb.append(“/src/main/resource/sdk”);

// path = sb.toString();

try {

//设置编码为UTF-8,这样设置转码会出一个问题,一旦遇到+号这种就会转成空格

DLL_PATH = java.net.URLDecoder.decode(path,“utf-8”);

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

//测试

}

}

上面的工具类写好后,就可以修改类,我给出原始文档写法和改良后的写法。修改对象,引入工具类,下面的代码给出解决方案

建议多手动敲代码,不要一味的复制粘贴。不然你会生疏的,除非是达到了一定的技术后,可以偷偷懒也是可以的嘛,当然这是玩笑话,活跃下气氛。

引入工具类


//原始写法

// HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(“HCNetSDK”,

// HCNetSDK.class);

//改完后的写法:通过GetDLLPath工具类去找dll绝对路径

HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary(GetDLLPath.DLL_PATH

  • “HCNetSDK.dll”,HCNetSDK.class);

//原始写法

// PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary(“PlayCtrl”,

// PlayCtrl.class);

//改良后写法:通过GetDLLPath工具类去找dll绝对路径

PlayCtrl INSTANCE = (PlayCtrl) Native.loadLibrary(GetDLLPath.DLL_PATH

+“PlayCtrl.dll”,PlayCtrl.class);

运行成功后的界面


做完以上步骤后,终于可以运行起来了。起飞,开启征程。工欲善其事,必先利其器

在这里插入图片描述

当然这是官方文档基于的写出的。如果项目需要引入,基本是用开发的模式,网上找一找海康也是可行的。当然你自己写个出来,也是可行的,最终你还是要在自己的项目中编写接口拿到数据。

分析接口


其实不难发现,最重要的就是这个接口里面提供的类容。比如定义了一些常量和全局错误代码可供快速查询,具体还是看你需要用到那一部分。下面截取部分代码

在这里插入图片描述

在这里插入图片描述

小编这些年深知大多数初中级Java工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助

因此我收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

原文链接:https://gitee.com/hh090807

小讯
上一篇 2025-04-14 08:22
下一篇 2025-05-23 09:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/197045.html