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

时间:2017-02-07 14:51:29

标签: python c dll runtime ctypes

我已将代码从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"。   可用的平台插件有:最小,屏幕外,窗户。   重新安装应用程序可能会解决此问题。

我尝试了以下操作,但没有一个工作:

  • 手动和使用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")
  • 复制了myexported.dll
  • 旁边的qwindows.dll

它唯一有效的案例是复制" platforms / qwindows.dll"在我的python文件夹中的python.exe文件旁边。

除非它们位于python.exe文件旁边,否则还有10个其他类似的dll无法找到。

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

1 个答案:

答案 0 :(得分:-1)

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

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