部署 Qt dll 文件 - 找不到 windows 插件,尽管 platforms/qwindows.dll 存在,所以 libEGL 和 libGLES

Deploying Qt dll file - cannot find windows plugin although platforms/qwindows.dll exists and so libEGL and libGLES

我将我的应用程序构建为普通 exe,并在其上 运行 windeployqt。我在带有 exe 的文件夹中得到了一长串文件。

files:
./
D3Dcompiler_47.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Svg.dll
Qt5Widgets.dll
WLedPlugin.exe
accessible
files.txt
iconengines
icudt52.dll
icuin52.dll
icuuc52.dll
imageformats
libEGL.dll
libGLESv2.dll
platforms
qt_cs.qm
qt_de.qm
qt_fi.qm
qt_hu.qm
qt_it.qm
qt_ja.qm
qt_ru.qm
qt_sk.qm
qt_uk.qm

./accessible:
qtaccessiblewidgets.dll

./iconengines:
qsvgicon.dll

./imageformats:
qdds.dll
qgif.dll
qicns.dll
qico.dll
qjp2.dll
qjpeg.dll
qmng.dll
qsvg.dll
qtga.dll
qtiff.dll
qwbmp.dll
qwebp.dll

./platforms:
qwindows.dll

然后我将应用程序编译为dll并将其放入具有适当程序的文件夹中。 (我正在为 Keil IDE 开发插件)。 DLL 很好看,但是当部分代码 随着 QApplication 的启动,它找不到 windows 插件。

如您所见,qwindows.dll 与 libEGL 和 libGLESv2 一样位于正确的文件夹中,但它仍然看不到 windows 插件。

我正在使用 msvc 编译器 x86 和 Qt 5.3 版本。


找到了一些解决方法 -> 我干脆放弃了 msvc 并改用 mingw。简直是搞砸了。

您需要将 qt.conf 放在您的 .exe 附近,或者放在 :qt/etc/qt.conf

的资源中
[Paths]
Prefix=.
Plugins=.

好的,我想我现在对问题的根源有了更多的了解。

我有 Keil 应用程序的文件夹和我的 dll 插件的文件夹。 Windows 检查调用的应用程序中调用的 dll 的依赖项 dll 目录在第一个,而不是在 dll 目录中。 Dll目录在较低的位置。

当然迟早 windows 应该最终到达 dll 的文件夹,但在某些机器上它没有。将依赖项从 DLL 的目录移动到应用程序的目录有帮助并且目前运行良好。感谢大家的帮助! :)