【C++】| 将程序打包成可执行文件(.exe)| Visual Studio


一、安装MVSIP扩展

在VS中,打包程序最简易的方式就是使用这个扩展啦,全称Microsoft Visual Studio Installer Project,有两种下载方式:(如果你已经安装了请跳至【二】)

〔方式一〕官网下载

对于不同的vs版本:

选择对应的版本,点击Download按钮即可下载,下载的是一个.vsix文件,双击运行就会启动VS的扩展安装程序。

但是不知道为什么我下载的mvsip2022总是提示扩展包损坏,如果你也有这种情况请看〔方式二〕。

安装完成后,进入vs,选择扩展按钮:

选择扩展一项
选择管理扩展,选择已安装一栏,如果有这一项:
Microsoft Visual Studio Installer Project *
就安装成功了。


〔方式二〕在VS内置扩展商城中下载

进入vs,选择扩展按钮:

选择扩展一项
选择管理扩展,选择联机一栏,右边搜索Microsoft Visual Studio Installer Project,找到:
Microsoft Visual Studio Installer Project *
名称为Microsoft Visual Studio Installer Project *(其中*为vs的版本),点击安装即可,安装后需要重启vs。

下载的速度可能及——其——的慢,如果进度条迟迟不动可以考虑连手机热点下载(就是会费流量了)。

安装后一样到已安装中查看是否安装成功。



二、配置Setup Project

打开你要打包程序的解决方案,在右侧有解决方案管理器(没有的话要自行开启),如图(我这个项目是连点器):
解决方案管理器

Tips:接下来,*代表你要打包的项目的名称。

右键解决方案"*"(x个项目/共x个)添加新建项目
新建项目
找到Setup Project项目
Setup Project
创建后如图所示:
setup project图
接下来:

  • 如果你的项目简单,只有一个主程序.cpp,没有.h等依赖项,直接右键Application FolderAdd项目输出,不用更改,直接确定即可,然后跳至【三】。
  • 如果项目有.h等文件,先在解决方案管理器中右键主项目,就是这个
    在解决方案管理器中右键主项目
    选择:
    在文件资源管理器中打开文件夹
    会弹出这个项目的目录,复制目录。
    右键Application FolderAdd文件,将刚才的目录复制进去,Ctrl+A全选文件,点击确定,如图:
    .
    然后右键Application FolderAdd项目输出,不用更改,直接确定即可。

关于这个界面下方的配置选项,可以根据安装环境

三、创建快捷方式

点击Application Folder,右边界面如图:
主输出
右键这个主输出 from *,选择创建快捷方式:

配置为Debug x64Release Win32Release x64的主输出无法创建快捷方式。如果选择的是这几种配置请跳至【四】。

Create Shortcut to ...
会生成一个快捷方式
名称默认为Shortcut to ...
将它拖动至左边的User's Desktop,就是这个:
用户桌面
拖动至此
就基本完成了。

你还可以有更多作法,这个User's Desktop就是待会会在用户桌面上生成的东西,Application Folder就是程序文件夹,User's Programs Menu就是在用户启动目录上生成的东西(就是任务栏最左边的那个win标点开展示的目录)。




四、生成安装程序

在解决方案管理器中右键Setup Project,选择重新生成
.
输出:
.
就说明成功了。
再次右键,选择
在文件资源管理器中打开文件夹
在打开的路径中进入Debug文件夹,这个*.msi就是安装程序了:
msi
如果是自己安装,也可以直接在右键菜单中选择安装
安装
给别人用的话就把*.msi发过去就好啦,不需要C++环境哦!


安装界面:
.
.
安装后,刚刚设置的快捷方式就会出现在桌面(以及别的你设置的东西)。
注意:卸载要去控制面板-卸载程序中卸载。

§、问题解答

Q1:在其他电脑上运行时报错,显示找不到***.dll

解决方法:

〔方法一〕

首先进入这个网站,搜索你缺失的dll,下载(如果是64位的话64和32位都要下载),解压,将64位的移至C:\Windows\System32\,将32位的移至C:\Windows\SysWow64\,也可参考网站上的教程。
关于这个,我还会再写一篇文章。

〔方法二〕

直接从能成功运行程序的电脑上的这两目录下分别找到丢失dll,复制过去并放到对应目录(别安反了)。

〔方法三〕

上网搜,对于一些特殊的dll可能有不同的处理办法。



Q2:各种配置有什么区别

配置有两部分:Debug|Release Win32|x64,其中win32也即x86,表示32位,x64表示64位。而Debug和Release的区别:

Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发 人员提供强大的应用程序调试能力。而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信 息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。


debug程序通常比release程序要慢,尤其是处理视频方便release要比debug快很多。在release模式对程序进行调试的时候经常会遇到变量虽然初始化了,但是在查看其值的时候却发现是一个随机的数并不是初始化的值,有时候在对变量进行监视的时候了,会出现找不到变量的情况,原因大致如下:

debug跟release在初始化变量时所做的操作是不同的,debug是将每个字节位都赋成0xcc, 而release的赋值近似于随机。如果你的程序中的某个变量没被初始化就被引用,就很有可能出现异常:用作控制变量将导致流程导向不一致;用作数组下标将会使程序崩溃;更加可能是造成其他变量的不准确而引起其他的错误。所以在声明变量后马上对其初始化一个默认的值是最简单有效的办法,否则项目大了你找都没地方找。代码存在错误在debug方式下可能会忽略而不被察觉到。debug方式下数组越界也大多不会出错,在release中就暴露出来了,这个找起来就比较难了。


只有DEBUG版的程序才能设置断点、单步执行、使用 TRACE/ASSERT等调试输出语句。REALEASE不包含任何调试信息,所以体积小、运行速度快。


摘自:vs中debug和release版本的区别

实际中要依据程序的安装环境而定,如果仅要装在自己的电脑上可以选择活动(active)





@HaohaoCppDebuger|寻兰 
2022/3/13 

-----THE END-----
THANK YOU !


更多文章

### 使用 AutoGPTQ 库量化 Transformer 模型 为了使用 `AutoGPTQ` 对 Transformer 模型进行量化,可以遵循如下方法: 安装所需的依赖包是必要的操作。通过 pip 安装 `auto-gptq` 可以获取最新版本的库。 ```bash pip install auto-gptq ``` 加载预训练模型并应用 GPTQ (General-Purpose Tensor Quantization) 技术来减少模型大小和加速推理过程是一个常见的流程。下面展示了如何利用 `AutoGPTQForCausalLM` 类来进行这一工作[^1]。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer from auto_gptq import AutoGPTQForCausalLM model_name_or_path = "facebook/opt-350m" quantized_model_dir = "./quantized_model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) # 加载已经量化的模型或者创建一个新的量化器对象用于量化未压缩过的模型 gptq_model = AutoGPTQForCausalLM.from_pretrained(quantized_model_dir, model=model, tokenizer=tokenizer) ``` 对于那些希望进一步优化其部署环境中的模型性能的人来说,`AutoGPTQ` 提供了多种配置选项来自定义量化参数,比如位宽(bit-width),这有助于平衡精度损失与运行效率之间的关系。 #### 注意事项 当处理特定硬件平台上的部署时,建议查阅官方文档以获得最佳实践指导和支持信息。此外,在实际应用场景之前应该充分测试经过量化的模型以确保满足预期的质量标准。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值