由于找不到 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,一经查实,立即删除!

相关文章

LaneKeepingEnv(自动驾驶仿真)

LaneKeepingEnv环境的工作原理可以归纳如下: 初始化阶段: 环境在创建时,会调用__init__方法进行初始化。初始化过程中,会设置一些关键的属性,如lane(当前车道)、lanes(所有车道的列…

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

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

zeppelin(kylin的可视化界面安装)(从头到尾安装)

zeppelin(kylin的可视化界面安装) 1、zeppelin安装前的准备工作: 1、虚拟机安装配置好jdk, 2、虚拟机安装配置好Hadoop, 3、虚拟机安装配置好Hive 4、虚拟机安装配置了hbase 5、安装了kylin(麒麟) 6、下载了zeppelin…

小程序域名怎么配置?三步教您配置

小程序域名怎样配置?在当今数字化时代,小程序已成为企业展示品牌形象、提供便捷服务的重要渠道。然而,许多开发者在搭建小程序时,都会遇到服务器域名配置的问题。今天,我们将为您揭秘小程序服务器域名配置的小tip&…

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等这几类文件…

Python 自定义类型提示 from __future__ import annotations

Python 自定义类型提示 from __future__ import annotations 正文方法1方法2方法3 正文 今天,遇到了一个比较有意思的问题,我自定义一个矢量类型,但是我想在它的方法中加入类型提示,但是遇到了错误,代码如下&#xff…

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;旨在确保操作系统之间彼此兼容。 很多开发人员也希望…

java进阶——JVM 与 Java 体系结构详解

文章目录 1.JVM 与 Java 体系结构1.1. 前言1.1.1. 开发人员如何看待上层框架1.1.1. 我们为什么要学习 JVM&#xff1f;1.1.2. Java vs C 1.2. Java 及 JVM 简介1.2.1. JVM&#xff1a;跨语言的平台1.2.1. 字节码1.2.2. 多语言混合编程 1.3. 虚拟机与 Java 虚拟机1.3.1. 虚拟机1…

vue 弹出框组件重复打开时,资源重新加载

新增或者编辑内容使用同一个弹出框&#xff0c;如何使数据可以重新加载&#xff1f; 1、绑定时间戳&#xff0c;有副作用&#xff0c;屏幕会闪烁一下 <el-dialog :key"timer" > </el-dialog> 2、v-if和:visible.sync同时使用 <el-dialogv-if"…

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

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

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

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

2710. 移除字符串中的尾随零

给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾随零&#xff0c;移除…