我对 Qt 有奇怪的问题。最近我下载了 Qt 5.0.1。现在我在 Qt 中以“Build->Start”开始的每个项目都运行良好。但是,如果我从资源管理器启动它的发布版本,则没有效果。如果我从资源管理器启动调试版本我有这个错误
怎么了?
我对 Qt 有奇怪的问题。最近我下载了 Qt 5.0.1。现在我在 Qt 中以“Build->Start”开始的每个项目都运行良好。但是,如果我从资源管理器启动它的发布版本,则没有效果。如果我从资源管理器启动调试版本我有这个错误
怎么了?
我认为您忘记在应用程序旁边复制插件目录。Dependency Walker 不会在列表中显示它们,因为它们是由 Qt Core 库在运行时加载的。所以最终的可执行文件在编译时不知道这些插件的链接或位置。
它准确地说,它需要什么——“windows”插件。它应该位于文件夹“平台”中,如qwindows.dll
.
您可以在Qt5 官方 windows 部署指南中阅读更多内容,但可以在论坛上查看更多实用信息,即此处。
简而言之:要使您的应用程序(使用动态构建的 Qt 编译)在其他机器上运行,您必须包含许多库。所有这些都应该从
Qt_installation_folder/Qt_version/used_compiler/bin
&
Qt_installation_folder/Qt_version/used_compiler/plugins/
QML 插件应该从
Qt_installation_folder/Qt_version/used_compiler/qml
&
Qt_installation_folder/Qt_version/used_compiler/imports
从项目中使用的完全相同的编译器复制 Qt 库非常重要。
下面我向您展示一个带有解释的示例(从上面的第二个链接借来的):
ROOT FOLDER
│ YourApp.exe
│ D3DCompiler_43.dll // } \
│ libEGL.dll // } --> If you use Qt built with ANGLE support
│ libGLESv2.dll // } /
│
│ icudt49.dll // } \
│ icuin49.dll // } --> If you use Qt built with WebKit (Unicode support)
│ icuuc49.dll // } /
│
│ Qt5Core.dll // --> Basic Qt module, always needed
│ Qt5Gui.dll // --> If you use GUI module
│
│ Qt5Network.dll // } \
│ Qt5Qml.dll // } --> If you use QML
│ Qt5Quick.dll // } --> module
│ Qt5V8.dll // } /
│
│ Qt5Multimedia.dll // } --> If you use multimedia
│ Qt5MultimediaQuick_p.dll // } --> from QtQuick
│
├───platforms
│ qwindows.dll // Always needed for windows
│
├───QtMultimedia // If you import QtMultimedia 5.x
│ declarative_multimedia.dll
│ plugins.qmltypes
│ qmldir
│ Video.qml
│
├───QtQuick.2 // If you import Qt.Quick 2.x
│ plugins.qmltypes
│ qmldir
│ qtquick2plugin.dll