Ctypes找不到我加载的dll的dll依赖

Posted

技术标签:

【中文标题】Ctypes找不到我加载的dll的dll依赖【英文标题】:Ctypes can not find the dll dependency of my loaded dll 【发布时间】:2017-02-07 14:51:29 【问题描述】:

我已将我的代码从 C 导出到 myexported.dll 。 myexported.dll 又依赖于platforms/qwindows.dll (QT)。与 myexported.dll 位于同一目录中

这就是我使用 ctypes 的方式:

#myapp.py

from ctypes import *
mydll = WinDLL("myexported.dll")
mydll.independant_foo() #works fine
mydll.dependant_foo() #prompts the error and exits the program (python.exe)

当我运行脚本时:

python.exe myapp.py

在调用需要 qwindows.dll 的函数之前,一切正常(非依赖函数)。此时会提示:

此应用程序无法启动,因为它无法找到或加载 Qt 平台插件“windows”。 可用的平台插件有:minimal、offscreen、windows。 重新安装应用程序可能会解决此问题。

我尝试了以下方法,但都没有奏效:

手动和使用 os.environ['PATH'] 将 qwindows.dll 的路径添加到环境中 os.chdir("path/to/platforms/qwindows.dll") 或 os.chdir("path/to/platforms") os.path.append("path/to/platforms/qwindows.dll") 或 os.path.append("path/to/platforms") 将 qwindows.dll 复制到 myexported.dll 旁边

唯一可行的情况是在我的 python 文件夹中的 python.exe 文件旁边复制“platforms/qwindows.dll”。

还有 10 个其他类似的 dll 找不到,除非它们在 python.exe 文件旁边。

如何强制 python.exe 查看 myapp.py 目录中的 dll?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。刚刚找到答案:error-when-loading-dll-from-a-different-directory-using-python-ctypes-cdl

简而言之,修改你的os.environ['PATH']

【讨论】:

以上是关于Ctypes找不到我加载的dll的dll依赖的主要内容,如果未能解决你的问题,请参考以下文章

未能加载文件或程序集“SharpSvn.dll”或它的某一个依赖项。找不到指定的模块。

asp.net提示“未能加载文件或程序集“XXXXXXXX.dll”或它的某一个依赖项。找不到指定的模块。”

WindowsError:[错误 126] 找不到指定的模块

模块qtcore.dll已经加载,但找不到入口点怎么解决

SSIS - 无法加载 DLL 'clrcompression.dll':找不到指定的模块

加载DLL文件时出错,找不到指定的模块,如何解决?