VS2019从代码到软件:VS2019中C++项目的一键打包指南

前言

在当今的时代,复杂代码的编写到精美软件的完美转身是一个必不可少的过程。从源代码到软件这个过程,不仅是技术飞跃,也是软件产品化的重要里程碑。在这个过程中,Visual Studio 2019给我带来重要的解决方案。对于C++开发者而言,Visual Studio 2019不仅是一个开发工具,更是将抽象概念转化为用户可用软件的桥梁。本篇将探讨在VS2019中写完C++项目之后,如何将项目打包成安装程序,生成软件。

对此,本篇内容将详细的说明这个过程。敬请各位大佬给我指出错误,我将不胜感激!

详细步骤

VS2019打包过程

安装拓展模块

确保安装Microsoft Visual Studio Installer Projects拓展,这是创建安装程序的官方工具。检查方式:打开VS2019,在工具栏中找到拓展,然后管理拓展来确认是否是否存在,如果没有,就在里面安装即可。

图一

图二

我也没有安装,点击联机,选择需要安装的软件,点击下载即可安装。

图三

注意:拓展下载非常慢,应该是服务器位于国外,接下来,我将提供方法提高下载速度。

点击你要下载的拓展的详细信息,进入网页。

图四

点击下载,然后到浏览器中的下载器,选择拓展下载,右键选择复制下载链接。

图五

图六

然后到浏览器中下载安装迅雷,打开软件建立新的下载任务,将你的链接输入其中,选在下载的文件夹下载即可。

图七

下载的位置请自主学习,完成设置之后,点击下载即可。当我们先打开迅雷软件,再去复制链接,进入迅雷下载,这个链接可以被软件自动添加无需我们手动添加,直接下载即可。

这个下载也会出现下载问题,只要没有发现进度没有动了就停止再启动就可以了。

图八

下载完成之后,找到你下载的位置,然后双击拓展进行安装。

图九

注意:安装需要你将VS2019关闭之后才能继续安装。

图十

安装完成之后,重启VS2019让其安装的拓展生效。进入拓展模块查看是否安装完成。

创建setup项目

打开写好的C++项目,然后查看解决方案管理器,右键解决方案添加项目:

图一

图二

在新的窗口中找到Setup Project并选中,点击下一步。

图三

下一步后配置项目,位置不用更改了,项目名称更改为你想要的。

添加项目输出和配置安装细节

进入新的界面后,点击Application Folder,右键选择Add,点击项目输出。

图一

选中你需要打包的项目,然后确保选中主输出,以此保证生成项目的DLL或者EXE。

图二

确认之后,选中界面右侧的主输出,然后右键,点击Create Shortcut to 主输出 from shizhong (Active),这是创建主输出的快捷方式,可以设置快捷方式放在桌面。

右键快捷方式,然后选择属性,在属性页面中将快捷方式放入User's Desktop。

图三

如果你有.ico文件,可以通过Icon进行添加,点击Browse进行添加,可以将文件放入User's Desktop。

选中User's Programs Menu,右键添加文件夹,然后将文件夹更改为项目名称,然后在右边选中文件夹,右键创建快捷方式,然后配置快捷方式。

注意:你要将User's Desktop中的快捷方式名称更改为你想要的,这样安装过后桌面上的软件名称就成为你所希望看到的名称了。

图四

生成安装文件和测试

选中右边的解决方案器中的Set项目,右键点击生成。

图一

发生了警告和错误,警告的意思是将.ico文件放入了个人文件夹中了,这会导致所用的系统用户不能访问,这就意味着图标不能很好的显示。

错误表明在User's Programs Menu下生成的文件夹的快捷方式是无效的。

解决方案:将.ico文件放入Application Folder下,确保全局共享;修改创建的快捷方式的名称和在User's Programs Menu中的项目文件夹的名称一致,然后在User's Programs Menu选中项目文件夹的属性,配置Always Create选择true。

再次生成,成功。

图二

找到我们生成的相关文件,然后进行安装测试。

图三

测试过程中发现,没有添加资源文件,这里在Application Folder,右键添加项目输出时选择资源附属DLL,即可。最后重新生成。注意:音乐资源文件利用这个资源附属DLL,不能一起打包,要在项目中选中你要打包的音乐资源文件,然后配置属性,在内容一栏选择是。

图四

注意:我在重新生成的时候,出现了以下错误:

ERROR: 生成引导程序时出错: Unable to finish updating resource for D:\luopan\C++\C++\chengxu\shizhong\LUOPANSHIZHONG\Debug\setup.exe with error 8007006E
ERROR: General failure building bootstrapper
ERROR: Unrecoverable build error - 0x80004005

这有可能是因为软件崩坏的原因,重新生成就可以了。

如果测试发现,还是不能播放我们在程序中设定的音乐播放,那么就在Application Folder中直接添加音乐文件。测试成功。

注意

可以在Application Folder添加想要的文件夹用于存放我们需要的文件,这样就有条理一点。要想播放音乐必须和主输出放在一起才能够播放,可以将快捷方式放在外面直接点击即可启动。

我使用的代码是来自

https://blog.youkuaiyun.com/youbestcando/article/details/142568823?spm=1001.2014.3001.5502https://blog.youkuaiyun.com/youbestcando/article/details/142568823?spm=1001.2014.3001.5502

### 使用C语言VS2019开发GUI图形化界面 虽然C语言本身并未提供原生的GUI支持,但借助第三方库(如GTK+、ncurses或EasyX),可以在Microsoft Visual Studio 2019 (VS2019) 中实现图形用户界面的应用程序开发。以下是具体方法和技术细节: #### GTK+ 库集成到 VS2019 GTK+ 是一个跨平台的 GUI 工具包,广泛应用于 Linux 和 Windows 平台上的 C/C++ 开发项目。要在 VS2019 中使用 GTK+ 创建 GUI 应用程序,需完成以下配置工作。 1. **下载并安装 GTK+ 运行时环境** - 访问官方 GTK+ 下载页面获取最新版本的运行时工具包。 - 安装完成后,记录下安装路径以便后续设置。 2. **配置 VS2019项目属性** - 打开一个新的 Win32 控制台应用程序项目。 - 转至项目的“属性”对话框,在 `C/C++ -> 常规` 设置项下的附加包含目录字段填入 GTK+ 头文件所在位置[^1]。 - 同样地,在链接器选项卡内的附加库目录指定 GTK+ 动态链接库的位置,并确保将必要的 `.lib` 文件加入输入依赖列表。 3. **编写简单的 GTK+ 程序** ```c #include <gtk/gtk.h> int main(int argc, char *argv[]) { gtk_init(&argc, &argv); GtkWidget *window; window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Hello World"); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); gtk_widget_show_all(window); gtk_main(); return 0; } ``` 此代码片段展示了如何利用 GTK+ 构建基本窗口框架[^2]。 #### ncurses 库简介及其局限性于Windows平台上 ncurses 主要设计用于终端控制字符屏幕操作而非传统意义上的图形界面构建。尽管它能在某些情况下模拟简单菜单样式交互体验,但在现代多窗体复杂 UI 场景下显得力有未逮。因此推荐优先考虑其他更适合做全功能 GUI 的解决方案像上述提到过的 GTK+。 #### EasyX 图形库简易入门指南 对于希望快速搭建基础绘图场景而不涉及过多高级控件需求的情况来说,EasyX 提供了一个轻量级的选择方案。需要注意的是该库主要定位于教学用途及小型娱乐性质软件制作领域内适用范围有限。 - **准备工作**:按照文档指示正确安装 Microsoft Visual Studio 2017 或更高版本以及配套提供的 EasyX SDK 包含头文件与静态库资源。 - **示例代码展示**: ```c #include <graphics.h> #include <conio.h> void drawHouse() { setcolor(BLACK); rectangle(50,80,150,150); // Draw house body setfillcolor(WHITE); fillrectangle(60,110,140,140);// Add door details } int main(){ initgraph(200,200,"");drawHouse();getch();closegraph();return 0;} ``` 以上实例说明了怎样调用 EasyX API 绘制一座简化的房屋图案[^3]。 综上所述,基于个人实际应用场景选取恰当的技术栈至关重要;如果追求灵活性和可移植性的大型商业产品,则倾向于采用成熟的开源框架如 GTK+ 来实施完整的桌面端用户体验优化流程;而对于教育训练目的或是趣味型小游戏创作而言,那么小巧便捷易于学习掌握的 EasyX 将会成为不错的新手友好型备选之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜作

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值