Krissi

Short description of the space

初学者必读:讲解 VC 下如何正确的创建及管理项目

本文讲解 Visual C++ 的项目文件组成,以及如何正确的创建及管理项目。

本文所设计的内容是初学者必须要掌握的。不能正确的管理项目,就不能进一步写有规模的程序。

一、项目下各种常见文件类型的功能

1. 代码文件

扩展名为 .cpp、.c、.h 等。

通常情况下,项目会由多个代码文件和头文件组成,每个文件实现不同的功能。

2. 资源文件

扩展名为 .rc 。

资源文件中定义了项目中所需的各种资源,例如图片、图标、对话框、声音等。项目中的资源引用情况均会记录在其中。有些资源会完整的记录在 .rc 里面,有些资源仅仅在 .rc 里面记录一个链接。

3. 项目管理文件

扩展名在不同版本的 VC 下有区别:VC6 为 .dsp,VC2008 / VC2010 为 .vcproj,VC2012 为 .vcxproj 。

项目管理文件管理所有代码、资源文件以及项目设置。

4. 工作区管理文件

扩展名在不同版本的 VC 下有区别:VC6 为 .dsw,VC2008 及以上版本为 .sln 。

在工作区内可以包括多个项目。

5. 编译的输出文件

默认情况下,VC 会将编译结果输出在 Debug 和 Release 文件夹下面。

二、创建项目

每个项目要有一个独立的文件夹,千万不要在同一个文件夹里面放不同项目的代码文件。

使用 VC 创建项目的时候,会自动以项目名称建立一个文件夹。具体创建项目的步骤,请参考 EasyX 官网的 Flash 演示视频。

我理解,很多初学者写的项目都只有几十行,为了几十行代码就创建一个文件夹以及一大堆于此相关的文件,似乎不值得。但是,编写代码必须使用正确的方式,同一个文件夹只能有与本项目相关的文件。

当然,如果仅仅作为小代码的保存方式,也是可以在同一个文件夹下面存放多个不同项目的代码文件的。

每次启动项目,不要双击 .cpp 文件,而要双击 .dsw 文件。这样才能让项目相关的文件都被正确关联。

三、管理项目

随着代码越写越大,项目所涉及的文件也会越来越多。这时候,将这些文件分类存放就显得很重要了。例如,可以将所有图片资源放在 res 文件夹下面等等。

对于代码的管理,建议学习下 git。推荐使用 git 客户端 git extensions,下载地址:http://gitextensions.github.io/

使用 git 需要花点时间学习。

四、发布项目

项目写完以后,如果需要把最终生成的 .exe 分享给好友,需要以下步骤:

1. 使用相对路径

调整代码,确保使用相对路径加载图片或音效等资源文件。

注意,如果从 VS 中执行程序,那么当前路径为项目所在路径,而不是 exe 所在的 debug 或 release 文件夹。

2. 生成项目的 Release 版本

在 VC 顶部的工具条上可以切换编译方式是 Debug 还是 Release。发布项目的时候,需要使用 Release 版本。

VC 的编译设置有两类:Debug 和 Release。

Debug 文件夹下面的 .exe 文件,是用来调试的,里面包含多种调试信息,比较臃肿,并且使用的是调试版本的运行时库,发给别人的时候,别人通常是无法执行的。

Release 文件夹下面的 .exe 文件,是用来发布的,里面删掉了所有调试信息,比较精简,并且使用是常规的运行时库,微软提供了该运行时库的安装包,并且很多人的系统中已经安装过。所以发布项目的时候,需要使用 Release 版本。

3. 附加运行时库

使用 Release 设置编译生成的 .exe,通常需要依赖运行时库才能执行。

附加运行时库有 3 种办法(推荐使用前两种):

3-1 打包运行时库

常见的做法,是通过安装程序将运行时库与 .exe、图片、音效等打包在一起,安装的时候,由安装程序检查系统中是否存在所需的运行时库,如果不存在,就自动安装。这样,可以确保 .exe 的运行环境是完备的。

安装程序推荐用 inno setup 或 nsis setup 来制作。

关于运行时库:

VC6 编译的 Release 版本的 .exe 文件,可以单独运行在任何 windows 平台上(大于 win95 即可)。

VC2008(及更高版本)编译的 Release 版本的 .exe 文件,运行它的电脑需要安装对应版本的运行时库。电脑上一般都有安装。如果没有安装,单独装一下就好了。

几个版本的运行时库的微软官方下载地址:

VC2008 (VC++ 9.0) 运行时库(x86):https://www.microsoft.com/download/details.aspx?id=29
VC2008 (VC++ 9.0) 运行时库(x64):https://www.microsoft.com/download/details.aspx?id=15336
VC2010 (VC++ 10.0) 运行时库(x86):https://www.microsoft.com/download/details.aspx?id=8328
VC2010 (VC++ 10.0) 运行时库(x64):https://www.microsoft.com/download/details.aspx?id=13523
VC2012 (VC++ 11.0) 运行时库:https://www.microsoft.com/download/details.aspx?id=30679
VC2013 (VC++ 12.0) 运行时库:https://www.microsoft.com/download/details.aspx?id=40784
VC2015 (VC++ 14.0) 运行时库:https://www.microsoft.com/download/details.aspx?id=53587
VC2017 (VC++ 15.0) 运行时库(x86):https://go.microsoft.com/fwlink/?LinkId=746571
VC2017 (VC++ 15.0) 运行时库(x64):https://go.microsoft.com/fwlink/?LinkId=746572
VC2019 (VC++ 16.0) 运行时库(x86):https://aka.ms/vs/16/release/VC_redist.x86.exe
VC2019 (VC++ 16.0) 运行时库(x64):https://aka.ms/vs/16/release/VC_redist.x64.exe
VC2019 (VC++ 16.0) 运行时库(arm64):https://aka.ms/vs/16/release/VC_redist.arm64.exe

3-2 打包运行时 dll

如果不想制作安装程序那么麻烦,可以将运行时库里面所需的 .dll 文件提取出来,和 .exe 放在同一个文件夹下,也是可以的。

3-3 静态链接

可以使用静态链接的形式,将需要用到的库与 .exe 链接在一起。方法:

打开项目属性对话框,选择:“Configuration Propertiees [配置属性] -> C/C++ -> Code Generation [代码生成]”,右侧将“Runtime Library [运行时库]”设置为“Multi-threaded (/MT) [多线程(/MT)]”。

这样做的缺点是:.exe 体积增大,且无法与其它程序共享运行时库的内容。

4. 考虑是否支持 Windows XP

如果希望你的程序可以运行在 WinXP 中,还需要这样设置:

打开项目属性对话框,选择:“Configuration Properties [配置属性] -> General [常规]“,”,右侧将“Platform Toolset [平台工具集]”设置为“Visual Studio 20** - Windows XP (v1**_xp)”。

分享到