【项目打包】visual studio 2022下c++项目打包成exe文件发布

刚进实验室,找学姐要点小活练练手,让我把之前的几个小功能的代码(py,matlab,c++)分别打包成exe软件。确实是人菜,遇到一些问题,以及中间的一些步骤就打算记下来,怕以后忘了。
【项目打包】matlab下mlapp项目打包成exe文件发布【项目打包】Pycharm下py项目打包成exe文件发布

配置信息

系统:win11
软件:visual studio 2022
Qt 5.9.9
情况:按照网上参考的各路教程一路打包下来,软件应该是行了,但是运行又闪退,debug的时候又能完整运行,百思不得其解。各种测代码加上网上论坛问的,发现还是Qt的毛病,等后面有空了,重新弄一下。
但是整个打包的过程是没有问题的,故还是记录一下,以供参考。

流程

C++的项目打包成exe,好像不止一种方法,我这里试过两种,一种是qt的一种是(我也不知道怎么描述)

Qt打包

首先,确保项目能在debug的情况下完整运行,Qt什么的也配置好了,然后这里选择release

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_qt


再重新生成解决方案

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_项目打包_02


运行没有问题之后,打开文件夹

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_c++_03


在这层目录中有个x64(对应着项目里的设置)

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_Qt_04


点到release这层就会有个对应的exe文件,但是还没完,需要添加项目相应的和配置的.dll文件,才能运行,复制这个文件夹路径。

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_visual studio_05


打开windows的开始,然后在更多里面找到Qt 5.9.9 (MsVC 2017 64-bit)

(QT版本无所谓,其他的应该是一样的)

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_qt_06


点击之后,cd到release的文件夹里面,再输入

windeployqt Name.exe name.exe

其中name是release文件夹当中exe文件的名字,即项目名称,回车即可将所需的qt的.dll文件复制过来

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_Qt_07


然后又因为其中vs的一些是必备的,找到vs的安装路径,以我的为例:D:\software\work\Microsoft Visual Studio\2022\VC\Redist\MSVC\14.32.31326\x64\Microsoft.VC143.CRT

复制所有的.dll文件,回到上面release的文件夹粘贴

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_c++_08


其他要的.dll文件就是,项目配置要的文件了,比如opencv的,那你就需要去把cv的.dll文件复制过来,比如opencv_world460.dll和opencv_world460d.dll这种的,具体的位置通常就在安装位置,不知道的可以打开vs里面的属性表查看

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_visual studio_09


为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_项目打包_10


其他情况

还有一个情况是直接用qt写的项目打包,这个我没有试,不过网上看见了
Qt之程序发布以及打包成exe安装包

vs自带拓展打包

这个比qt简单些感觉,有很多博客已经写的比较清楚了我就存个档了

首先,下载拓展Installer Projects,下载好之后新建项目选择setup project

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_项目打包_11


为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_qt_12


名字什么的,就根据自己情况来

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_c++_13


这样选择文件,把所有项目相关的文件选择添加进去,再确定

然后再次选择项目输出

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_qt_14


选择主输出之后,点确定

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_visual studio_15


这里可以选择添加个快捷方式(无关紧要)

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_visual studio_16


设置好之后,点击重新生成成功后就得到了安装的文件

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_项目打包_17


打开可以找到

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_visual studio_18


为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_项目打包_19


通过setup.exe就可以安装软件了

为什么c写的程序可以打包成exe而java不行 c++程序打包成exe_项目打包_20


不过运行之后还是会有点毛病。