由于找不到 XXX.dll,无法继续执行代码。重新安装程序可能会解决此问题——解决方案

由于找不到 XXX.dll,无法继续执行代码。重新安装程序可能会解决此问题——解决方案

一、问题描述

之前项目都是在Ubuntu操作系统下完成,进行的很顺利。由于我没有Linux物理机,每次都要打开虚拟机感觉挺麻烦的,我就想着把在Linux上能做的工作都转移到Windows上来。

作者在Windows下使用MSYS2 MINGW64完成了FFmpeg的编译,我的目的是用C++做音视频开发,所以程序中按以下方式引用了FFmpeg的头文件:

extern "C" {
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavutil/pixfmt.h"
#include "libswscale/swscale.h"
}

编译程序编译命令如下:

g++ fm.cpp -o fm.exe -I "$basepath/lib/include" -L "$basepath/lib/lib" -lavformat -lavcodec -lavutil -lswscale -fexec-charset=UTF-8

程序编译成功后,我双击fm.exe文件运行,就出现了如下报错:

在这里插入图片描述

二、问题溯源

dll文件是Windows操作系统中的一种共享库文件,许多程序在运行时需要这些文件。以下是一些可能的原因:

  1. 文件损坏或缺失:dll文件可能已损坏或从系统中丢失。
  2. 注册表问题:dll文件可能没有正确注册到Windows注册表中。
  3. 版本不兼容:安装的程序可能需要特定版本的dll,而系统中的版本不兼容。
  4. 路径问题:系统可能无法在正确的路径找到所需的dll文件。
  5. 病毒或恶意软件:某些病毒或恶意软件可能会删除或损坏dll文件。

在我的问题描述中,出现的错误经查是dll文件系统找不到,究其原因是

  • 路径问题

所谓路径问题是指,Windows会在一系列系统默认的路径中查找相应的dll文件,如果系统默认的路径中不存在系统将继续在用户添加的环境变量路径中查找。如果最终都未找到,则会出现今天我们看到的错误。

从以上分析中,我们得到启发,最少有两种方法来解决这个问题:

  1. 将dll文件复制到系统的默认查找目录下;
  2. 将dll文件所在目录的路径设置为系统环境变量。

三、解决方案

3.1 方案1——拷贝dll文件到系统目录

首先,我们明确一下,操作系统最先查找的目录是:

C:\Windows\System32

那么我们只需要将dll文件复制到该目录即可,拷贝过后你将发现程序已经能正常运行。

可以手动拷贝,也可以用命令拷贝,下面给出用命令(copy)拷贝的方法。

  • 检查dll文件是否为所期待的dll文件

    使用dir命令显示dll文件所在文件夹的所有dll文件,具体命令格式为:

    dir 文件夹路径/*.dll /a
    
    • *.dll表示匹配指定路径下所有dll类型文件
    • /a表示显示详细信息

    我的操作实例如下

    D:\ToolChainlib\FFmpeg\ffmpeg-lib\bin>dir *.dll /a驱动器 D 中的卷是 Data卷的序列号是 C2EF-215ED:\ToolChainlib\FFmpeg\ffmpeg-lib\bin 的目录2024/06/06  02:17        13,936,128 avcodec-58.dll
    2024/06/06  02:17           143,872 avdevice-58.dll
    2024/06/06  02:17         3,533,312 avfilter-7.dll
    2024/06/06  02:17         2,375,168 avformat-58.dll
    2024/06/06  02:17           620,032 avutil-56.dll
    2024/06/06  02:17           123,392 swresample-3.dll
    2024/06/06  02:17           564,224 swscale-5.dll7 个文件     21,296,128 字节0 个目录 293,111,025,664 可用字节
    

    由于我的控制台位置(D:\ToolChainlib\FFmpeg\ffmpeg-lib\bin)就是dll文件所在的目录,因此dir命令的参数就不需要写路径了,直接写文件名(*.dll)即可

  • 拷贝文件

    命令格式为:

    copy 源文件夹路径 目标文件夹路径 /Y
    
    • /y表示如果拷贝过去遇到了同名文件则覆盖;如果读者不想覆盖的话直接删除/y即可。

    我的操作实例如下

    D:\ToolChainlib\FFmpeg\ffmpeg-lib\bin>copy *.dll C:\Windows\System32 /y
    avcodec-58.dll
    avdevice-58.dll
    avfilter-7.dll
    avformat-58.dll
    avutil-56.dll
    swresample-3.dll
    swscale-5.dll
    已复制         7 个文件。
    
3.2 方案2——设置环境变量

首先确定dll文件所在的目录路径,比如我的dll文件所在目录路径为:

D:\ToolChainlib\FFmpeg\ffmpeg-lib\bin

确定路径后,按照下面的指引完成环境变量配置:

  • 用系统的搜索工具,搜索环境变量

  • 在打开的窗口中点击”环境变量

  • 在打开的窗口中找到”Path“,选中后单击”编辑

  • 在新窗口中创建一个条目然后粘贴我们的路径即可,最后确定即可。

3.3 测试

这下没问题了,万能Hello World!,祝我好运。

四、心灵的救赎

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国版Wayve决战端到端,等待数据的大力出奇迹

作者 |王博 编辑 |德新 「人工智能的定律只有一个,就是规模定律(Scaling Law),大力出奇迹。端到端是描述方式,更应该去考虑如何去生产更多的自动驾驶合适的数据,来喂养更大更合适的模型,取得更…

C语言野指针、规避野指针、assert宏断言

目录 a.野指针成因 1.指针未初始化 2.指针越界访问 3.指针指向的空间释放 b.规避野指针 1.指针初始化 2.小心指针越界 3.指针变量不再使用时,及时置NULL,指针使用之前检查有效性 4.避免返回局部变量的地址 c.assert宏断言的使用 概念&#xff1…

【MySQL】SQL通用语法

【MySQL】SQL通用语法 SQL是结构化查询语言(Structured Query Language)的缩写,是一种专门用来管理和操作关系型数据库的标准化语言。SQL能够实现数据库的创建、查询、更新和删除操作,以及对数据进行存储、检索和管理。通过SQL语句…

串口屏在焊接机上的应用

在现代工业自动化浪潮中,焊接技术作为制造业的脊梁,其精准与效率直接关系到产品的质量和生产线的流畅性。而在这场技术的革新中,串口屏以其独特的优势,正成为焊接机领域的璀璨明星。今天,就让我们一同探索串口屏如何助…

动手学深度学习28 批量归一化

动手学深度学习28 批量归一化 批量归一化代码从零实现调包简洁实现 QA https://www.bilibili.com/video/BV1X44y1r77r/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ceba9c9a2e5f09752ef8 批量归一化 n个比较小的数相乘,值会越来越小。 批量归一化:…

opencv-python(四)

读取图像文件 image cv2.imread(path, flag) flag:1. 默认值,依原图像读取图像,保留Alpha透明度通道。2.IMREAD_GRAYSCALE:将图像转为灰度再读取。3.IMREAD_COLOR:将图像转为三通道BGR彩色再读取。 可读取的图像格…

upload-labs-第五关

目录 第五关 1、构造.user.ini文件 2、构造一个一句话木马文件,后缀名为jpg 3、上传.user.ini文件后上传flag.jpg 4、上传成功后访问上传路径 第五关 原理: 这一关采用黑名单的方式进行过滤,不允许上传php、php3、.htaccess等这几类文件…

Vue根据后端返回的tabList动态渲染组件信息

最近做了一个功能&#xff0c;后端根据配置信息&#xff0c;动态返回一个tabList&#xff0c;其中结构是List<String,Object> tabList; map里面的数据是 label、value 页面需要根据tablist动态渲染组件&#xff08;不同的tab都使用了组件进行了封装&#xff09; 实现效果…

都给我冲!微信视频号下载助手可快速提取视频号视频,已测可用

不少视频内容创作者在写文案&#xff0c;以及收集素材的时候发现微信视频号的视频无法下载&#xff0c;该怎么办呢&#xff1f; 都给我冲&#xff01;已实测好用的视频号下载助手&#xff0c;无论是个人或者企业都可以快速保存视频号视频。 你也不用担心自己是用到什么设备&am…

Xilinx的Aurora8B10B ip原理讲解(高速收发器十六)

点击进入高速收发器系列文章导航界面 前文讲解了Aurora 8B/10B协议的一些基础知识&#xff0c;本文对Xilinx的Aurora 8B/10B IP进行讲解&#xff0c;该IP在Aurora 8B/10B的基础之上还完成了字对齐等等操作&#xff0c;开放给用户的端口有axi_full或axi_stream两种格式。 相应的…

17.3 命令行-POSIX特性、安装与分享

1. POSIX特性 在Linux和macOS系统中&#xff0c;大多数命令行工具都要求以推荐标准POSIX指定的方式传递命令行参数。 POSIX即UNIX可移植操作系统接口(Portable Operating System Interface of UNIX)是一套标准&#xff0c;旨在确保操作系统之间彼此兼容。 很多开发人员也希望…

沃尔沃Volvo EDI:运输标签测试流程

对接Volvo的EDI项目中&#xff0c;需要按照以下流程完成测试&#xff1a; 1.创建EDI连接并且传输第一个交付计划 2.请求发货通知以及运输标签 3.反馈关于发货通知以及运输标签的细节 4.使用生产数据进行最终的验证 在Volvo EDI项目案例中&#xff0c;详细介绍了有关连接测试以…

25届最近5年南京航空航天大学自动化考研院校分析!

南京航空航天大学 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教材介绍 三、近5年考研分数情况 以下为南京航空航天大学&#xff0c;自动化学院近几年的考研分数情况。 以下为南京航空航天大学&#xff0c;航天学院近几年的考研分数情况。 以下为南京…

React -- memo允许你的组件在 props 没有改变的情况下跳过重新渲染。

memo(Component, arePropsEqual?) 使用 memo 将组件包装起来&#xff0c;以获得该组件的一个 记忆化 版本。通常情况下&#xff0c;只要该组件的 props 没有改变&#xff0c;这个记忆化版本就不会在其父组件重新渲染时重新渲染。但 React 仍可能会重新渲染它&#xff1a;记忆化…

内容产品运营方案业务架构解析与实践探索

### 背景 在信息爆炸的时代背景下&#xff0c;内容产品运营成为各行各业竞争的重要环节。构建合理的内容产品运营方案业务架构&#xff0c;能够帮助企业更好地管理内容生产、推广和变现&#xff0c;提升品牌影响力和商业价值。 ### 业务架构设计 #### 1. 内容生产与管理 建立…

漏洞挖掘 | 记一次信息泄露到登入后台

这次是项目上遇到的一个洞&#xff0c;打开页面是一个红红的登录页面 这里就不放图了&#xff0c;浓浓的红色气息~ 老样子抓登录包 虽然是明文传输但是爆破弱口令无果 f12大法&#xff0c;审计源代码&#xff0c;在其中一个js文件中发现了这个接口 拼接URL进行访问 感觉有点东…

移动性:mobility

移动性管理原理 什么是移动性 一些术语 移动性管理办法 让网络&#xff08;路由器&#xff09;处理移动性&#xff1a;路由器通过常规路由表发送交换节点的永久地址 路由器互相交换各自移动节点位置信息&#xff0c;路由系统定期会通告自己这边新移动过来的移动设备信息端系统…

【Linux】系统优化:一键切换软件源与安装Docker

引言 在Linux系统安装完成后&#xff0c;进行一些必要的初始化设置是提升系统性能和用户体验的关键。本文将重点介绍两个实用的一键脚本&#xff1a;LinuxMirrors提供的软件源切换脚本和Docker安装脚本。这两个脚本将帮助我们简化配置安装过程。 一键切换软件源脚本 在Linux…

【Test 58】 Qt信号与槽机制! 高频的Qt 知识点!

文章目录 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09;2. QObject 类 connect 的介绍3. 信号与槽机制连接方式4. 信号和槽机制优势及其效率&#xff1a;5. 信号与槽机制应用 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09; &#x1f42…

【Java笔记】第9章:三个修饰符

前言1. abstract&#xff08;抽象的&#xff09;2. static&#xff08;静态的&#xff09;3. final&#xff08;最终的&#xff09;结语 上期回顾:【Java笔记】第8章&#xff1a;面向对象的三大特性&#xff08;封装、继承、多态&#xff09; 个人主页&#xff1a;C_GUIQU 归属…