我对Qt有一个奇怪的问题。最近我下载了Qt 5.0.1。现在我在Qt开始的每个项目都是“Build-> Start”,效果很好。但是,如果我从资源管理器开始发布它的版本没有任何影响。如果我从资源管理器启动调试版本,则会出现此错误
怎么了?
答案 0 :(得分:1)
我想您忘记在应用程序旁边复制插件目录了。 Dependency Walker不会在列表中显示它们,因为它们是由Qt Core libs在运行时加载的。因此,最终可执行文件在编译时不知道这些插件的链接或位置。
答案 1 :(得分:1)
它精确地说,它需要什么 - “windows”插件。它应位于“平台”文件夹中,如qwindows.dll
。
您可以在Qt5 official windows deployment guide中阅读更多内容,而是在论坛上查看更实用的信息,i。即here
简而言之:要使您的应用程序(使用动态构建的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库非常重要。
下面我给你一个例子(借鉴above second link)并附上解释:
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