当我使用 pyinstaller 创建 .exe 文件时,“应用程序冻结时找不到 dynlib/dll”,因为 pylibmtx 发生了错误

2023-12-06

enter image description here

when I enter image description here

我正在努力制作 .exe 文件。 错误消息显示第 9 行有问题,所以我检查了我的代码。有导入的库“pylibdmtx”,用于解码数据矩阵。

所以我尝试删除有关该库的所有内容以及其他相关属性,然后就可以了。 我试图找出该问题以进行故障排除,但找不到它。所以我最后向你问我的问题。

我上传了我的问题的捕获

thanks.


也许有点晚了,但如果其他人对此有疑问,我会分享此信息:

found here.

在引导加载程序中,我们使用提取路径调用 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'))

Works:

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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我使用 pyinstaller 创建 .exe 文件时,“应用程序冻结时找不到 dynlib/dll”,因为 pylibmtx 发生了错误 的相关文章

随机推荐