LabVIEW如何排查和修复dll缺失问题

1、前言

labview使用过程中难免会遇到需要调用外部dll库的情况,但是dll之间会有引用依赖关系,仅添加一个dll常常无法正常运行,因为该dll代码中可能包含了对其他dll的依赖。

2、问题背景

我在添加一份由.NET编写的外部dll库时,遇到了如下的报错:

System.DllNotFoundException: 无法加载 DLL"Driver.dll": 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)

3、解决思路

已知情况如下:

1)项目中直接引用的是另一个文件A.dll,A.dll依赖Driver.dll,由此我推断是项目没能加载Driver.dll。

2)进一步排查,通过项目的"查看→内存中的.NET程序集"中也可以看到,只加载了A.dll这个被直接引用的dll(后续处理完成后发现,此处只会显示被直接引用的dll,实际上并不显示简介引用的dll,即不你的dll所依赖的其他dll)。

3)因此一开始时一直按照"如何为labview手动添加dll依赖"来处理。

我尝试了很多方法来为项目引用Driver.dll:

1)项目目录下存放A.dll和Driver.dll。

但是实际只有A.dll被项目自动加载了,依然提示缺失问题;

2)在labview的项目lvib文件中添加dll文件。

情况同1,只有A.dll被加载。

3)在LabVIEW.exe同级目录放置dll,一般为"C:\Program Files (x86)\National Instruments\LabVIEW 2025",以及在labVIEW的rfesource目录下放置dll,一般为"C:\Program Files (x86)\National Instruments\LabVIEW 2025\resource"。

上述两条路径放置依然无效;

4)在Windows的系统目录下放置dll,一般为"C:\Windows\SysWOW64\"或"C:\Windows\System32\"。

依然无效。

经过上述尝试,始终报错缺失dll,因此开始怀疑是否问题并不是出在Drive.dll没有被加载上,只是labview显示的内容有问题。

4、最终解决方案

1)使用DLL分析工具"Dependencies"解析文件A.dll。

终于发现是因为Driver.dll还依赖了一个libusb0.dll的文件,但是我的驱动里缺少了这个dll,导致labview一直报错Driver.dll未加载。

2)后续的解决方法就是,去厂家的驱动库里找到这个缺失的dll文件,将所有dll文件都放在labview项目所在的目录,就会自动加载了,无需再lvib项目中手动添加,项目也会自动加载需要的dll。

相关推荐
用户2986985301420 小时前
C# 实现 PowerPoint 多格式转换:图片、PDF 与 SVG 实战
c#·.net·svg
李高钢20 小时前
【WPF】从 Avalon 到 .NET 10:WPF 平台演进史与特性全览
.net·wpf
LabVIEW开发1 天前
LabVIEW主程序中子VI未执行问题
labview·labview知识·labview功能·labview程序
编程圈子2 天前
电机驱动开发学习25. 弱磁控制与全速域增益调度
驱动开发·学习
T型码农要学习2 天前
eMMC_命令整理
linux·驱动开发·emmc
恒锐丰-罗生2 天前
率能半导体 SS6840 单通道 H 桥电机驱动芯片深度解析
驱动开发·嵌入式硬件·硬件工程
刚子编程2 天前
用 Inno Setup 把 .NET 程序打包成安装包:从零到发布的完整指南
.net·inno setup·码农刚子·.net 程序打包·安装脚本编写
界面开发小八哥2 天前
界面控件DevExpress Blazor v26.1新版亮点 - TreeList & 数据编辑器
javascript·编辑器·.net·界面控件·blazor·devexpress·用户界面
rockey6272 天前
C#脚本引擎之AScript与Flee对比
c#·.net·script·eval·动态脚本
恒锐丰-罗生2 天前
国产 H 桥驱动 SS6289|18V/4A 有刷电机驱动芯片性与应用分析 内置采样 + 多保护,门锁 / 机器人优选器件
驱动开发·嵌入式硬件·硬件工程