我有一个 qt c++ 普通程序。在Windows中使用mingw8.1 gcc作为编译器。
我可以在 qt Creator 中运行它。
但是当我想使用windeplotqt进行部署时,它失败了:
a.exe does not seem to be a Qt executable
Run Code Online (Sandbox Code Playgroud)
我的步骤是:
1. copy the exe from build-xxx-release/release/a.exe to a clean folder
2. open terminal from QT(mingw) from my windows start menu
3. cd the clean folder in terminal
4. windeployqt a.exe
Run Code Online (Sandbox Code Playgroud)
然后错误就出来了。
这让我发疯,因为我多次重新安装QT。我可以确保我的qt是一个干净的环境。
有人可以帮忙吗?
当我运行windeployqt部署应用程序时,收到以下警告:
Warning: Cannot find GCC installation directory. g++.exe must be in the path.
Run Code Online (Sandbox Code Playgroud)
即使我已将Path环境变量设置为包含位于C:\Qt\Qt5.12.0\5.12.0\mingw73_64\bin. 结果,我可以看到编译器运行时库不包含在部署的包中,即使我显式使用--compiler-runtime标志也是如此。我不确定我错过了哪一步?
我正在使用 windeployqt 为一个非常简单的 Hello World 类型 QML 应用程序创建一个具有正确依赖项的可执行文件。使用时,用命令
windeployqt . --release --qmldir D:\Documents\QT-Projects\HelloQML
Run Code Online (Sandbox Code Playgroud)
在可执行文件所在的文件夹中。这很好用,我可以毫无问题地运行可执行文件。但是,我发现我可以删除目录中的许多文件和文件夹,而不会影响运行程序。为了比较,这里是原始文件夹内容。
这是我删除了所有可以删除的内容后的文件夹,同时仍然允许程序运行(我没有尝试删除任何子文件夹中的任何内容)。
有没有办法让 windeployqt 不复制这么多不必要的项目?
每次在 Visual Studio 中首次构建新的 Qt 项目时,即使安装了 VS Tools,我也必须复制一些与 Qt 相关的二进制文件(Qt5Core.dll、平台文件...)。否则,当从 Visual Studio 运行时,Qt5Core.dll(或调试)可以正确找到,但找不到平台 DLL:
显然,当从 IDE 外部运行时,例如在自动化构建的单元测试期间,它也会失败。
Qt 有一个工具可以执行此操作,称为windeployqt,它基本上查找依赖项 (Qt) 并复制它们。例如:
c:\Qt\Qt5.12.1\bin\windeployqt c:\projects\qt-project\Release --release
Run Code Online (Sandbox Code Playgroud)
将分析其中的可执行文件c:\projects\qt-project\Release并将所需的 DLL、插件、翻译和其他相关二进制文件复制到该位置。
我对如何集成windeployqt到 Visual Studio 的构建工作流程感兴趣,因此这个过程是自动的(即使在不同的计算机上签出)。
我正在尝试部署一组 QT 应用程序。在 linux 上,安装所有依赖项后,所有应用程序都可以正常工作,但在 Windows 中,基于 QtQuick 的应用程序根本无法运行。
要在 Windows 上部署,我按照以下步骤操作:
mingw到系统环境路径windeployqt.exe --release c:\myappdir\relesase\myapp.exe当第 3 步完成后,我在Qt5Quick.dllrelease文件夹中得到了很多 dll 。但不起作用,也没有抛出任何错误。为了获得任何额外信息,我添加到myapp.pro文件下的CONFIG参数并通过控制台运行 myapp.exe 我得到了以下信息:myapp.execonsole
QQmlApplicationEngine failed to load component
qrc:/main.qml:1 module "QtQuick" is not installed
qrc:/main.qml:-1 module "QtQuick" is not installed
qrc:/main.qml:1 module "QtQuick" is not installed
Run Code Online (Sandbox Code Playgroud)
我的 QtSDK 版本是 5.10.0 和MinGW,所以这个解决方案根本不起作用,我遇到了更多错误。
更重要的是,如果我尝试在根文件夹中没有那些 dll 的情况下运行 myapp.exe,它可以正常工作。
我一整天都在试图找到任何解决方案,但似乎没有任何效果。
我很确定我错过了一些东西,但我不知道它是什么。谢谢