1

我对 Qt 有奇怪的问题。最近我下载了 Qt 5.0.1。现在我在 Qt 中以“Build->Start”开始的每个项目都运行良好。但是,如果我从资源管理器启动它的发布版本,则没有效果。如果我从资源管理器启动调试版本我有这个错误

在此处输入图像描述

怎么了?

4

2 回答 2

1

我认为您忘记在应用程序旁边复制插件目录。Dependency Walker 不会在列表中显示它们,因为它们是由 Qt Core 库在运行时加载的。所以最终的可执行文件在编译时不知道这些插件的链接或位置。

于 2013-03-14T07:22:55.023 回答
1

它准确地说,它需要什么——“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
于 2013-10-03T12:19:05.340 回答