Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 建筑Qt静态,can';我找不到明_C++_Windows_Qt_Powershell_Mingw - Fatal编程技术网

C++ 建筑Qt静态,can';我找不到明

C++ 建筑Qt静态,can';我找不到明,c++,windows,qt,powershell,mingw,C++,Windows,Qt,Powershell,Mingw,我正在尝试构建Qt的静态版本,以便为我的项目生成一个.exe文件 我找到了教程,正在使用教程作者编写的脚本。当我尝试运行脚本时,我的PowerShell会提供以下信息> Building static Qt version 5.3.1 ERROR: MinGW environment not found, no Qt prebuilt version? Press Enter to continue...: 这是不可能的。我知道这一点,因为我已经用Qt5制作了项目,并用我的MinGW编译器构建

我正在尝试构建Qt的静态版本,以便为我的项目生成一个.exe文件

我找到了教程,正在使用教程作者编写的脚本。当我尝试运行脚本时,我的PowerShell会提供以下信息>

Building static Qt version 5.3.1
ERROR: MinGW environment not found, no Qt prebuilt version?
Press Enter to continue...:
这是不可能的。我知道这一点,因为我已经用Qt5制作了项目,并用我的MinGW编译器构建了它们

其他一些信息: MinGW位于:

C:/Qt/Tools/mingw491_32 (/bin/gcc.exe)
当我打开脚本时,有一行>

#Search all instances of gcc.exe from C:\Qt prebuilt environment. 
$GccList = @(Get-ChildItem -Path C:\Qt\*\Tools\mingw*\bin\gcc.exe | ForEach-Object FullName | Sort-Object)
因此,在我看来,gcc应该由脚本找到

有人知道这里发生了什么吗


谢谢。

这不完全是你问题的答案,但可能是你问题的解决方案

创建源代码的可执行文件时,不需要将Qt设置为静态。静态选项更适合于没有操作系统的嵌入式系统,或者下面有一个非常薄的操作系统。我无法想象,这在windows上是有意义的

建立一个发布版本,将您的exe和Qt和mingw的所有必需DLL复制到一个目录中,并将此目录复制到任何windows pc。它应该可以工作

要检查需要哪些DLL,请使用

为了以更专业的方式提供exe,请创建一个安装程序。我推荐,这很容易使用。

更换
C:\Qt\*\Tools\mingw*\bin\gcc.exe
具有
C:\Qt\Tools\mingw*\bin\gcc.exe

如果要复制DLL,请使用windeployqt,这比使用dependency walker非常简单。这将为您将所有DLL复制到给定文件夹

Copy <MyApp.exe> to a folder say <MyAppPackage>

cd to <MyAppPackage>

C:\Qt\Qt5.7.0\5.7\mingw53_32\bin\windeployqt.exe MyApp.exe
复制到文件夹
cd至
C:\Qt\Qt5.7.0\5.7\mingw53\u 32\bin\windeployqt.exe MyApp.exe
所有DLL都将复制到
文件夹。

它帮助我:

在我的(Windows 10)系统上,读取“C:\Qt*\Tools\mingw*\bin\gcc.exe”的路径需要更改为“C:\Qt\Tools\mingw*\bin\gcc.exe”


谢谢,我成功地做到了这一点,但现在,在复制了我的项目所依赖的所有dll之后,我的项目的大小超过了约130 Kb的.exe文件和约44 MB的不同.dll文件。有没有办法知道我的项目正在使用哪个.dll部分,这样我就可以编辑其中的一些,从而使项目更小?您不需要包含Windows和系统目录中的所有dll。只有Qt和Mingw应该足够了。从Qt5Gui、Qt5Core、libwinpthread、libstdc++-6、libgcc开始,依次添加缺少的DLL。实际上,在Windows PC上44 MB并不是什么不寻常的事情。您的项目非常小,因为所有功能都在DLL中。