猿问

应用程序无法启动,因为它无法找到或加载QT平台插件“windows”

应用程序无法启动,因为它无法找到或加载QT平台插件“windows”

我查看了所有与堆栈溢出相关的问题,但没有一个解决方案对我有帮助。

我正在使用此设置构建Qt应用程序:

  • Windows 7专业版x64

  • Visual Studio 2012

  • Qt 5.2.0内置 configure -developer-build -debug-and-release -opensource -nomake examples -nomake tests -platform win32-msvc2012 -no-opengl

  • 项目使用QtSingleApplication(qt-solutions)

  • 应用程序是一个32位应用程序

  • qmake使用以下命令运行:-makefile -spec win32-msvc2012

  • .pri使用 QMAKE_CXX += /D_USING_V110_SDK71_

我可以在我的开发机器上构建和运行我的程序(如上所述); 我也可以在dev机器上的Program Files目录下安装和运行包。

当我在Windows Vista计算机上安装并运行时(多台计算机)

  • 安装VC ++ redist 2012 11.0.61030.0

  • 安装VC ++ redist 2010 10.0.40219

  • 加上2005年,2008版的redist

(在Windows 7的全新安装上也失败了)

我明白了:

Application failed to start because it could not find or load the QT platform plugin "windows"

所以我按照说明添加了.platforms /目录,并添加了qwindows.dll(还添加了qminimal.dll和qoffscreen.dll); 我还添加了libEGL.dll,libGLESv2.dll(即使我不应该需要它们,我不认为)

一旦我添加了qoffscreen.dll,我现在得到了额外的消息: Available platform plugins are: offscreen

如果我通过Dependency Walker运行,我会列出以下错误:

GetProcAddress(0x76CA0000 [KERNEL32.DLL], "GetCurrentPackageId") called from "MSVCR110.DLL" at address 0x6AC6FDFA and returned NULL. Error: The specified procedure could not be found (127).

然后进一步得到:

GetProcAddress(0x745A0000 [UXTHEME.DLL], "BufferedPaintUnInit") called from "COMCTL32.DLL" at address 0x745FFBF8 and returned 0x745AE18C.This application failed to start because it could not find or load the Qt platform plugin "windows".Available platform plugins are: offscreen.Reinstalling the application may fix this problem.

任何想法如何解决这个DLL问题?


湖上湖
浏览 15339回答 3
3回答

墨色风雨

应用程序能够在主机系统上运行,因为Qt bin路径在系统PATH变量中。有一个标准的Qt工具,用于在Windows上部署Qt应用程序,windeployqt以便能够在未安装Qt的目标计算机上运行应用程序。该工具负责Qt DLL依赖项,制作副本,platforms\qwindows.dll并且它还使用Dependency Walker无法检测到的库副本,因为图像插件和其他一些DLL在运行时加载。您甚至不需要bin在您的环境中拥有Qt 文件夹PATH。最简单的部署:将内置exe二进制文件复制到新文件夹cmd在该文件夹中打开控制台windeployqt使用完整路径调用(如果它不在系统中PATH)并提供可执行文件,例如:c:\Qt\Qt5.2.1\5.2.1\msvc2010_opengl\bin\windeployqt.exe application.exe因此,您在该文件夹中拥有运行应用程序所需的所有Qt DLL。该工具windeployqt有多种选择。它还可以处理qml相关文件的部署。当然,您也可能遇到MSVC可再发行组件的问题,但这些应该单独部署并在每个系统上安装一次。如果使用它们,则只应手动复制某些第三方库,例如OpenSSL。
随时随地看视频慕课网APP
我要回答