Win10Python3.8调用动态链接库时报错FileNotFoundError: Could not find module解决方案
目录
1 问题
在python3.8中调用动态链接库时报错,代码如下
-
import platform
-
from ctypes import *
-
-
-
if platform.system().lower() == 'windows':
-
self.lib = cdll.LoadLibrary('./platform/percipio_cam.dll')
-
else:
-
self.lib = cdll.LoadLibrary('./platform/libpercipio_cam.so')
报错信息为:FileNotFoundError: Could not find module 'D:\PycharmProject\AutoNeck\platform\percipio_cam.dll' (or one of its dependencies). Try using the full path with constructor syntax.具体如下图所示
2 原因
这段程序放在python3.6环境中运行是没有问题的,但是python3.8环境中会报错。具体原因在于python3.8变更了Windows下动态链接库(DLL)的加载规则。新的规则提高了安全性,默认情况下仅能从可信的位置加载DLL依赖,一定程度上比避免诸如DLL劫持之类的安全风险。
3 解决方案
解决方案有多种,这里仅提供一种。只需要稍微修改一下代码即可,具体如下:
-
import platform
-
from ctypes import *
-
-
-
if platform.system().lower() == 'windows':
-
self.lib = CDLL('./platform/percipio_cam.dll', winmode=0)
-
else:
-
self.lib = cdll.LoadLibrary('./platform/libpercipio_cam.so')
指定winmode参数(该参数将指定底层调用WinAPI LoadLibraryEx时所使用的flags),将值指定为可以从本地路径加载,替换掉默认行为。
此时我们就可以正常加载DLL文件啦!
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibbiki
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22