gol*_*log 27 c++ dll qt platform
我查看了所有与堆栈溢出相关的问题,但没有一个解决方案对我有帮助.
我正在使用此设置构建Qt应用程序:
configure -developer-build -debug-and-release -opensource -nomake examples -nomake tests -platform win32-msvc2012 -no-openglQMAKE_CXX += /D_USING_V110_SDK71_我可以在我的开发机器上构建和运行我的程序(如上所述); 我也可以在dev机器上的Program Files目录下安装和运行包.
当我在Windows Vista计算机上安装并运行时(多台计算机)
(在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).
Run Code Online (Sandbox Code Playgroud)
然后进一步得到:
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.
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个DLL问题?
Jan*_*itz 25
该错误是由于程序找不到引起的 qwindows.dll
qwindows.dll必须位于一个名为的文件夹中,platforms以便从可执行文件到dll的路径platforms/qwindows.dll
虽然这在我的情况下是不够的.我还要在main()的开头添加以下行
QCoreApplication::addLibraryPath("./");
Run Code Online (Sandbox Code Playgroud)
一切顺利.
Ore*_*era 10
应用程序能够在主机系统上运行,因为Qt bin路径在系统PATH变量中.
有一个标准的Qt工具,用于在Windows上部署Qt应用程序,windeployqt以便能够在未安装Qt的目标计算机上运行应用程序.
该工具负责Qt DLL依赖项,制作副本,platforms\qwindows.dll并且它还使用Dependency Walker无法检测到的库副本,因为图像插件和其他一些DLL在运行时加载.
您甚至不需要bin在您的环境中拥有Qt 文件夹PATH.最简单的部署:
exe二进制文件复制到新文件夹cmd在该文件夹中打开控制台windeployqt使用完整路径调用(如果它不在系统中PATH)并提供可执行文件,例如:
Run Code Online (Sandbox Code Playgroud)c:\Qt\Qt5.2.1\5.2.1\msvc2010_opengl\bin\windeployqt.exe application.exe
因此,您在该文件夹中拥有运行应用程序所需的所有Qt DLL.
该工具windeployqt有多种选择.它还可以处理qml相关文件的部署.
当然,您也可能遇到MSVC可再发行组件的问题,但这些应该单独部署并在每个系统上安装一次.
如果使用它们,则只应手动复制某些第三方库,例如OpenSSL.
我遇到了这个问题以及我是如何解决的:
使用依赖walker(http://www.dependencywalker.com/)查看所需dll的确切路径.试试看,因为QtCreator和QT框架都有相同的dll,你必须确定使用的确切数据.我复制了与应用程序在同一文件夹中所需的所有dll.
我已经从QT框架/插件中复制了文件夹平台,并将其复制到与应用程序相同的文件夹中.现在,该应用程序还包含其所有dll的插件/平台/文件夹
在我的情况下,最重要的一步是在与应用程序相同的文件夹中创建一个名为qt.conf的文件.该文件应包含插件的路径.我的qt.conf文件包含:
[Paths]
Libraries = ../lib/qtcreator
Plugins = plugins
Imports = imports
Qml2Imports = qml
小智 6
我遇到了同样的问题:“应用程序无法启动,因为它无法找到或加载QT平台插件“ windows”,因此无法启动,我通过将以下文件复制到app.exe(我的应用程序可执行文件)文件夹来解决此问题,
Qt5Core.dll,Qt5Gui.dll,Qt5Widgets.dll和带有qminimal.dll,qoffscreen.dll,qwindows.dll的“平台”目录。
我希望这会帮助某人
好吧,我解决了我的问题,尽管我不确定有什么区别:
我将 qt 目录中的每个 dll 复制到应用程序目录的 ./ 和 ./platforms 中。
该应用程序克服了错误,但随后崩溃了。
VERSION.dll 导致崩溃(在依赖项步行器中注明),因此我从两个地方都将其删除。
应用程序启动了,所以我系统地删除了所有不需要的 dll。
这让我回到了原来的状态。
然后我卸载了我的应用程序并重新安装(仅剩下 ./platforms/qwindows.dll 文件),应用程序正常工作。
所以我只能假设平台目录中的 qwindows.dll 版本不正确。
| 归档时间: |
|
| 查看次数: |
61866 次 |
| 最近记录: |