【Python3.8】ctypes加载dll: 报错 FileNotFoundError: Could not find module ‘xx.dll’ (or one of its

2023-11-19

问题

Python3.8 使用ctypes加载dll时报错

FileNotFoundError: Could not find module ‘xxx.dll’. (or one of its
dependencies). Try using the full path with constructor syntax.

原因

自python3.8开始,考虑到dll劫持等安全性问题,python3.8更改了dll的搜索加载机制,即只在指定可行的位置搜索加载dll,不再自动读取系统的环境变量Path了。

官方解释

在这里插入图片描述

解决方法

方法1

老老实实使用完整的绝对路径,
如果还不行,说明这个dll依赖了其他路径下的dll,这种情况使用方法2添加路径

CDLL("xxx/yyy/zzz.dll")
WinDLL("xxx/yyy/zzz.dll")

方法2

添加dll及其所有依赖的搜索路径(绝对路径)再加载

os.add_dll_directory("xxx/yyy")
CDLL("zzz.dll")

方法3(推荐)

在加载时加上参数winmode=0,此参数为py38的参数,为了兼容3.8以下,3.8以前的没有这个参数。
此方法能够使用相对路径 加载工程下的dll 或者 加载环境变量Path下的dll

指定winmode参数(该参数将指定底层调用WinAPI LoadLibraryEx时所使用的flags),将值指定为0可以从本地路径加载,替换掉默认行为。

CDLL("yyy/zzz.dll", winmode=0)
WinDLL("yyy/zzz.dll", winmode=0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python3.8】ctypes加载dll: 报错 FileNotFoundError: Could not find module ‘xx.dll’ (or one of its 的相关文章

随机推荐

  • IGBT工作原理及作用

    一 IGBT是什么 IGBT Insulated Gate Bipolar Transistor 绝缘栅双极型晶体管 是由BJT 双极型三极管 和MOS 绝缘栅型场效应管 组成的复合全控型电压驱动式功率半导体器件 兼有MOSFET的高输入阻
  • condition_variable 锁

    std condition variable提供了两种 wait 函数 当前线程调用 wait 后将被阻塞 此时当前线程应该获得了锁 mutex 不妨设获得锁 lck 直到另外某个线程调用 notify 唤醒了当前线程 在线程被阻塞时 该函
  • QML 相互之间通讯 信号 槽

    QML 之间 信号与槽 方式一 对于 QML 中的属性如果其值发生改变 QML 自动会发生相关信号 on
  • 关于nlp-pyltp的基本介绍和使用

    一 下载 ltp 模型 ltp data v3 4 0 pyltp 1 ltp模型下载地址如下 https download csdn net download TFATS 12758993 2 下载pyltp如下 pip install
  • 编译linux内核成vmlinuz,内核编译之vmlinuz vmlinux system.map initrd

    一 vmlinuz vmlinuz是可引导的 压缩的内核 vm 代表 Virtual Memory Linux 支持虚拟内存 不像老的操作系统比如DOS有640KB内存的限制 Linux能够使用硬盘空间作为虚拟内存 因此得名 vm vmli
  • 使用Minitab解决Excel的限制问题

    前两天 当我在做数据转置以期获得更好分析图形的时候 我碰到了传说中excel的限制 如图 在解决这个问题的过程中 我发现了用来做数据分析 比excel更好的工具Minitab 打开minitab 把纪录数据的Excel表以File gt O
  • pageaudit 属性不正确。_浅析script 标签的 async 和 defer 属性

    每日前端夜话 第420篇 正文共 1500 字 预计阅读时间 7 分钟 前端当然要从 HTML 开始 今天来聊聊在 script 标签中加上 async defer 时的功能及差异 都明白的道理 我们都知道 浏览器解析 HTML 是一行一行
  • 【Xilinx Vivado时序分析/约束系列4】FPGA开发时序分析/约束-实验工程上手实操

    目录 建立工程 添加顶层 模块1 模块2 添加约束文件 编辑时钟约束 打开布线设计 代码代表的含义 时序报告 进行时序分析 Summary 包含了汇总的信息量 Source Clock Path 这部分是表示Tclk1的延时细节 Data
  • 数字后端知识点扫盲——CTS (上)

    后端和前端一样在IC设计中扮演着非常重要的角色 甚至可以说入门的前端设计工程师对timing的理解远不如一个后端设计工程师 因此想要更好的理解电路的timing在后端P R之后或者说在大规模的设计中后端如何实现clock对DFF的驱动 就需
  • VM16 CentOS 快照恢复以及Linux自动修复指令

    目录 快照恢复 自动修复磁盘 快照恢复 点击上图的拍摄快照 即可进行CentOS 6的虚拟机系统备份 需要恢复系统 就点击之前备份过的快照记录 即可恢复系统 自动修复磁盘 当Linux启动时出现 UNEXPECTED INCONSISTEN
  • 【threejs】根据点绘制直线

    实现代码
  • 东京大学最新研究成果!一种可实现陆空两栖的新型四足机器人SPIDAR,具备多模态运动能力

    原创 文 BFT机器人 现实中 蜘蛛可以凭借飘荡的蛛丝在空中漂浮 让它们能够穿越复杂地形 普通蜘蛛长度只有几毫米 重量只有几十克 如何让比蜘蛛重数百倍的机器人实现多模态运动 是众多学者研究的热点 具有多模态运动能力的机器人 几乎都是移动系统
  • ESP32-C2开发板 Homekit烧录教程

    准备 1 1硬件ESP32 C2开发板 如图1 1所示 图1 1 ESP32 C2开发板 1 2软件 CozyLife APP可以在各大应用市场搜索下载 也可以扫描二维码下载如图1 2所示 HomeKit flash download to
  • 【Maven】maven如何配置本地仓库?

    前言 很多小伙伴不清楚怎么配置maven本地仓库 这里给大家分享一下方法 如果觉得有用的话 记得点赞支持哦 1 创建新的路径 maven默认的存放路径是C盘 在你想要的位置创建一个存放maven repository的路径 我是创建在了D盘
  • 读取其他进程内存数据

    1 读取进程内存数据 读取其他进程内存数据 需要用到的windows API函数 BOOL ReadProcessMemory HANDLE hProcess LPCVOID lpBaseAddress LPVOID lpBuffer DW
  • Mysql-DML(数据处理语言)

    插入数据 insert into member values 1 张三 21 5000 insert into member id name values 2 李四 insert into member values 3 王五 23 300
  • typedef struct 用法详解

    typedef为C语言的关键字 作用是为一种数据类型定义一个新名字 当typedef与结构结合使用时 会有一些比较复杂的情况 而且在C语言和C 里面有略有差别 本文将详细讲解typedef struct的用法 第一篇 typedef str
  • C++异常处理

    如果你写的方法是给他人使用 那么 如果这个方法失败 最好是以抛异常的方式告诉别人 而不是在方法声明的地方写注释 0 成功 1 网络连接失败 3 参数错误 抛出异常 throw 1 抛出 int 类型异常 throw 1 2 抛出 doubl
  • Qt中QSplitter使QWidget改变屏占比

    Qt系列文章目录 文章目录 Qt系列文章目录 前言 一 QSplitter是什么 二 具体代码 1 头文件 2 实现文件 总结 前言 在Qt中把QWidget窗体三等分 我想实现QWidget中的三等分窗口能够像QDockWidget类一样
  • 【Python3.8】ctypes加载dll: 报错 FileNotFoundError: Could not find module ‘xx.dll’ (or one of its

    问题 Python3 8 使用ctypes加载dll时报错 FileNotFoundError Could not find module xxx dll or one of its dependencies Try using the f