我开始了一个只有C ++代码的Qt项目,此时一切正常。以下是我的配置以及我要部署可执行文件的步骤:
在Windows10 64位,x64处理器,联想Thinkpad平板电脑上进行编程。使用Qt5.9框架和MinGW32bit编译器。
windeployqt.exe
。MSI
包。据我所知,这个MSI
设置的输出应该只是将文件复制到ProgramFiles
目录,并添加正确的快捷方式到开始菜单和桌面。此时,一切都有效。但是几天以后,QML代码被添加到项目中(因此一些OpenGL依赖插件)。我添加了一个QQuickWidget
,它在我的视口上实例化了一个QML地理Map对象。在我设法让它在Windows上运行之后,我无法再获得独立 *可执行文件。使用Qt IDE运行它但是,但运行独立 *可执行文件却没有。 (对不起,如果条款不正确:独立包含DLL和大量文件依赖项)
当所有DLL都被复制到可执行文件夹中时(上面的步骤1.),应用程序卡在后台,并且什么都不显示。此外,没有运行时错误来调试它或找出丢失的DLL,如果有。
我的想法是没有加载一些QML插件,或OpenGLES和Angle出现问题,这里有一些我作为依赖的DLL:
D3Dcompiler_47.dll
libEGL.dll
libgcc_s_dw2-1.dll
libGLESV2.dll
libstdc++-6.dll
opengl32sw.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Network.dll
{{ 1}} Qt5Positioning.dll
Qt5Qml.dll
Qt5Quick.dll
Qt5QuickWidgets.dll
Qt5SerialPort.dll
Qt5Svg.dll
与可执行文件处于同一级别。Qt5Widgets.dll
进入“平台”文件夹,以及其他一些文件夹,例如“qmltooling”,“position”,“platforminputcontexts”...(编辑,看似相关的QML插件目录)。我不知道它会是什么。有人有什么想法吗?
将环境变量QML_IMPORT_TRACE设置为1时的输出。qwindows.dll
消息不是qml跟踪的一部分。自从我添加了QML地图后,我总是得到它们,但是当通过Qt Creator运行时似乎没有问题。
qt.network.ssl ...
答案 0 :(得分:1)
对于QML应用程序,您应该在使用windeploy.exe时按照以下命令
windeployqt --qmldir [path-to-app-qml-files] [path-to-app-binary]
答案 1 :(得分:0)
从Qt安装文件夹复制到.exe文件夹:
这样你的.exe文件夹就像这样:
如果程序现在运行正常,那么您可以进入QtQuick文件夹并尝试删除程序中未使用的库。
答案 2 :(得分:0)
您可以使用有用的windeployqt工具在发布目录中收集所有必需的依赖项:
rem %1 H:\src\trunk\src\qt\cargofinder
pushd f:\qt\5.9\msvc2015_64\bin
call qtenv2.bat
popd
windeployqt --qmldir %1 .
答案 3 :(得分:0)
我最近遇到此问题,我使用的是 QT版本5.12 64位的编译器 cl(MSVC2017)。我描述了要解决的过程,如下所示:>
好的,到目前为止,它是可行的。提示:如此之多的Qt依赖于Dll,我很疲惫。提示:将qml floder复制到运行时目录,然后运行exe,然后将其所有 (ps:似乎无法删除qml \ QtQuick中的一些空置文件,如果我将其删除,双击该exe文件将什么也没有发生。)