python-3.x - 当我使用 pyinstaller 创建 .exe 文件时,“应用程序被冻结时找不到 dynlib/dll”,因为 pylibmtx 发生了错误
问题描述
我正在努力制作 .exe 文件。错误消息显示它在第 9 行有问题,所以我检查了我的代码。有导入的库“pylibdmtx”用于解码数据矩阵。
所以我试图用其他相关属性删除该库的所有内容,然后就没事了。我试图找出这个问题以进行故障排除,但我找不到它。所以我最后问你我的问题。
我上传了我的问题的截图
谢谢。
解决方案
也许有点晚了,但如果其他人对此有疑问,我会分享这些信息:
在这里找到。
在引导加载程序中,我们使用提取路径调用 SetDllDirectory。出于某种原因,这似乎阻止了从当前目录加载 dll。如果使用 Null 参数调用 SetDllDirectory 以重置 dll 搜索路径,则从当前目录加载 dll 工作。
基于 vlc 和 libvlc.dll 的示例。
不起作用:
import ctypes
import os
os.chdir('C:\\Program Files\\VideoLan\\VLC\\')
print(ctypes.CDLL('libvlc.dll'))
作品:
import ctypes
import os
ctypes.windll.kernel32.SetDllDirectoryW(None)
os.chdir('C:\\Program Files\\VideoLan\\VLC\\')
print(ctypes.CDLL('libvlc.dll'))
因此,如果您的代码使用 ctypes 加载外部 DLL 文件,请确保在加载 DLL 之前添加此行(在 Windows 下测试,不确定其他操作系统)
ctypes.windll.kernel32.SetDllDirectoryW(None)
推荐阅读
- sql - 跨多个列添加 NULL 值
- python - android studio中的googlemaps python库?
- javascript - 停止 docker 时浏览器不会启动
- java - 如何知道 Java 应用程序(Spring 应用程序)的正确堆大小是多少?
- css - 使用 flexbox 在 body 中创建和放置按钮
- excel - 使用 Outlook VBA 触发 Excel 宏读取电子邮件内容
- javascript - 在不禁用 IOS 指南针访问的情况下使用 javascript 创建 SVG 对象
- python - 在 Windows 10 中正确设置环境变量和未找到模块错误的问题
- javascript - 为什么语音识别在我的 web 应用程序中不起作用?是因为我正在自动播放视频吗?
- machine-learning - 为什么在使用 RNN pytorch 时填充句子