当前位置: 首页 > news >正文

初学者必读:讲解 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。

四、发布项目

项目写完以后,如果需要把最终生成的 .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) 运行时库:Visual C++ 2008 运行时库 9.0.30729.5677 - AppZip
  • VC2010 (VC++ 10.0) 运行时库:Visual C++ 2010 运行时库 10.0.40219.1 - AppZip
  • VC2012 (VC++ 11.0) 运行时库:Visual C++ 2012 运行时库 11.0.61030.0 - AppZip
  • VC2013 (VC++ 12.0) 运行时库:Visual C++ 2013 运行时库 12.0.30501.0 - AppZip
  • VC2015 (VC++ 14.0) 运行时库:Visual C++ 2015 运行时库 14.0.24212.0 - AppZip
  • VC2017 (VC++ 15.0) 运行时库:Visual C++ 2017 运行时库 14.16.27033.0 - AppZip
  • VC2019 (VC++ 16.0) 运行时库:Visual C++ 2015-2019 运行时库 14.27.29112.0 - AppZip

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)”。

全套源码素材看我:725022484

小鱼快来啊的个人空间-小鱼快来啊个人主页-哔哩哔哩视频哔哩哔哩小鱼快来啊的个人空间,提供小鱼快来啊分享的视频、音频、文章、动态、收藏等内容,关注小鱼快来啊账号,第一时间了解UP注动态。编程学习群:725022484 每天分享一个编程小游戏~C/C++游戏源码素材及各种安装包, 私信不常看!https://space.bilibili.com/1827181878?spm_id_from=333.788.0.0

相关文章:

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

Visual C 的项目文件组成,以及如何正确的创建及管理项目。 本内容是初学者必须要掌握的。不能正确的管理项目,就不能进一步写有规模的程序。 一、项目下各种常见文件类型的功能 1. 代码文件 扩展名为 .cpp、.c、.h 等。 通常情况下,项目…...

剑指offer(中等)

目录 二维数组中的查找 重建二叉树 矩阵中的路径 剪绳子 剪绳子② 数值的整数次方 表示数值的字符串 树的子结构 栈的压入、弹出序列 从上到下打印二叉树① 从上到下打印二叉树③ 二叉搜索树的后序遍历序列 二叉树中和为某一值的路径 复杂链表的复制 二叉搜索树与…...

微软发布会精华回顾:“台式电脑”抢了风头

Lightbot北京时间2016年10月26日晚10点,微软在纽约发布了名为 Surface Studio 的一体机、名为 Surface Dial 的配件以及外观未变的顶配版 Surface Book。同时,微软宣布了 Windows 10 下一个重要版本——“Creators Update”的数项新功能,包括…...

CF1561C Deep Down Below 题解

CF1561C Deep Down Below 题解题目链接字面描述Deep Down Below题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路TLE算法具体思想TLE特例AC思想代码实现备注题目 链接 https://www.luogu.com.cn/problem/CF1561C 字面描述 Deep Down Below 题面翻译…...

秒杀项目之服务调用分布式session

目录 nginx动静分离 服务调用 创建配置zmall-cart购物车模块 创建配置zmall-order订单模块 服务调用 spring session实战 什么是Spring Session 为什么要使用Spring Session 错误案例展示 配置spring-session 二级域名问题 用户登录 nginx动静分离 第1步&#xff…...

聊聊什么是架构,你理解对了吗?

什么是架构?软件有架构?建筑也有架构?它们有什么相同点和不同点? 下面咱们就介绍一下,容易混淆的几个概念 一、系统与子系统 系统 泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是 “总体”、“整体”或“联盟” 子系…...

java多线程开发

1.并发和并行 并发:同一时间段内多个任务同时进行。 并行:同一时间点多个任务同时进行。 2.进程线程 进程(Process):进程是程序的一次动态执行过程,它经历了从代码加载、执行、到执行完毕的一个完整过程…...

杂记7--opencv的ar码模块学习

背景&#xff1a;项目需要用到marker知识&#xff0c;所以到官网上临时补一些知识。 概要&#xff1a;主要介绍marker一些接口的含义&#xff0c;纯属个人理解&#xff0c;有误则希望大佬不吝赐教 1、 涉及ar码操作学习&#xff0c;其头文件为&#xff1a; #include <op…...

[项目设计]高并发内存池

目录 1、项目介绍 2、高并发内存池整体框架设计 3、thread cache <1>thread cache 哈希桶对齐规则 <2>Thread Cache类设计 4、Central Cache <1>Central Cache类设计 5、page cache <1>Page Cache类设计 6、性能分析 <1>定长内存池实现…...

28岁才转行软件测试,目前32了,我的一些经历跟感受

我是92年的&#xff0c;算是最早的90后&#xff0c;现在跟你介绍的时候还恬不知耻的说我是90后&#xff0c;哈哈&#xff0c;计算机专业普通本科毕业。在一个二线城市&#xff0c;毕业后因为自身能力问题、认知水平问题&#xff0c;再加上运气不好&#xff0c;换过多份工作&…...

Python导入模块的3种方式

很多初学者经常遇到这样的问题&#xff0c;即自定义 Python 模板后&#xff0c;在其它文件中用 import&#xff08;或 from...import&#xff09; 语句引入该文件时&#xff0c;Python 解释器同时如下错误&#xff1a;ModuleNotFoundError: No module named 模块名意思是 Pytho…...

select 与 where、order by、limit 子句执行优先级比较

当 select 和 其他三种语句的一者或者多者同时出现时&#xff0c;他们之间是存在执行先后顺序的。 他们的优先级顺序是&#xff1a;where > select > order by > limit 目录 1、select 与 where 2、select 与 order by 3、order by 与 limit 4、优先级证明 1、s…...

Linux内核并发与竞争-原子操作

一.原子操作的概念首先看一下原子操作&#xff0c;原子操作就是指不能再进一步分割的操作&#xff0c;一般原子操作用于变量或者位操作。假如现在要对无符号整形变量 a 赋值&#xff0c;值为 3&#xff0c;对于 C 语言来讲很简单&#xff0c;直接就是&#xff1a; a3但是 C 语言…...

Java笔记-泛型的使用

参考&#xff1a; Java 泛型&#xff0c;你了解类型擦除吗&#xff1f; 泛型的使用 1、泛型的定义 可以广泛使用的类型&#xff0c;一种较为准确的说法就是为了参数化类型&#xff0c;或者说可以将类型当作参数传递给一个类或者是方法。 2、泛型的使用 2.1泛型类 public c…...

特斯拉无人驾驶解读

来源于Tesla AI Day Tesla无人驾驶算法的核心任务就是如何理解我们所看到的一切呢?也就是说,不使用高端的设备,比如激光雷达,仅仅使用摄像头就能够将任务做得很好。Tesla使用环绕型的8个摄像头获得输入。 第一步是特征提取模块Backbone,无论什么任务都离不开特征…...

生物素-琥珀酰亚胺酯Biotin-NHS;CAS号:35013-72-0;可对溶液中的抗体,蛋白质和任何其他含伯胺的大分子进行简单有效的生物素标记。

结构式&#xff1a; ​ 生物素-琥珀酰亚胺酯Biotin NHS CAS号&#xff1a;35013-72-0 英文名称&#xff1a;Biotin-NHS 中文名称&#xff1a;D-生物素 N-羟基琥珀酰亚胺酯&#xff1b;生物素&#xff0d;琥珀酰亚胺酯 CAS号&#xff1a;35013-72-0 密度&#xff1a;1.50.1 …...

Maven_第五章 核心概念

目录第五章 其他核心概念1、生命周期①作用②三个生命周期③特点2、插件和目标①插件②目标3、仓库第五章 其他核心概念 1、生命周期 ①作用 为了让构建过程自动化完成&#xff0c;Maven 设定了三个生命周期&#xff0c;生命周期中的每一个环节对应构建过程中的一个操作。 …...

【深度学习】人脸识别工程化落地

文章目录前言1、facenet2、使用2.1.其它blog2.2 实践总结前言 老早以前就希望能写一篇关于人脸识别的工程化落地的案例&#xff0c;一年前做疲劳驾驶时使用的dlib插件&#xff0c;它封装好了&#xff0c;人脸检测、对齐、相似度计算三个部分,就是插件比较难装,但同时也少了很多…...

AOP面向切面编程思想。

目录 一、AOP工作流程 1、基本概念 2、AOP工作流程 二、AOP核心配置 1、AOP切入点表达式 2、AOP通知类型 三、AOP通知获取数据 1、获取参数 2、获取返回值 3、获取异常 四、AOP事务管理 1、Spring事务简介 2、Spring事务角色 3、事务属性 一、AOP工作流程 1、…...

实验7-变治技术及动态规划初步

目录 1.统计个数 2.数塔dp -A 3.Horspool算法 4.计数排序 5.找零问题1-最少硬币 1.统计个数 【问题描述】有n个数、每个元素取值在1到9之间,试统计每个数的个数 【输入形式】第一行,n的值;第二行࿰...

JVM垃圾回收机制GC理解

目录JVM垃圾回收分代收集如何识别垃圾引用计数法可达性分析法引用关系四种类型&#xff1a; 强、软、弱、虚强引用软引用 SoftReference弱引用 WeakReferenceWeakHashMap软引用与虚引用的使用场景虚引用与引用队列引用队列虚引用 PhantomReference垃圾回收算法引用计数复制 Cop…...

C++中的容器

1.1 线性容器1&#xff09;std::array看到这个容器的时候肯定会出现这样的问题&#xff1a;为什么要引入 std::array 而不是直接使用 std::vector&#xff1f;已经有了传统数组&#xff0c;为什么要用 std::array?先回答第一个问题&#xff0c;与 std::vector 不同&#xff0c…...

2023备战金三银四,Python自动化软件测试面试宝典合集(五)

接上篇八、抓包与网络协议8.1 抓包工具怎么用 我原来的公司对于抓包这块&#xff0c;在 App 的测试用得比较多。我们会使用 fiddler 抓取数据检查结果&#xff0c;定位问题&#xff0c;测试安全&#xff0c;制造弱网环境;如&#xff1a;抓取数据通过查看请求数据&#xff0c;请…...

SpringDI自动装配BeanSpring注解配置和Java配置类

依赖注入 上篇博客已经提到了DI注入方式的构造器注入&#xff0c;下面采用set方式进行注入 基于set方法注入 public class User {private String name;private Address address;private String[] books;private List<String> hobbys;private Map<String,String>…...

2月面经:真可惜...拿了小米的offer,字节却惨挂在三面

我是2月份参加字节跳动和华为的面试的&#xff0c;虽然我只拿下了小米的offer&#xff0c;但是我自己也满足了&#xff0c;想把经验分享出来&#xff0c;进而帮助更多跟我一样想进大厂的同行朋友们&#xff0c;希望大家可以拿到理想offer。 自我介绍 我是16年从南京工业大学毕…...

磐云PY-B8 网页注入

文章目录1.使用渗透机场景windows7中火狐浏览器访问服务器场景中的get.php&#xff0c;根据页面回显获取Flag并提交&#xff1b;2.使用渗透机场景windows7中火狐浏览器访问服务器场景中的post.php&#xff0c;根据页面回显获取Flag并提交&#xff1b;3.使用渗透机场景windows7中…...

多传感器融合定位十-基于滤波的融合方法Ⅰ其二

多传感器融合定位十-基于滤波的融合方法Ⅰ其二3. 滤波器基本原理3.1 状态估计模型3.2 贝叶斯滤波3.3 卡尔曼滤波(KF)推导3.4 扩展卡尔曼滤波(EKF)推导3.5 迭代扩展卡尔曼滤波(IEKF)推导4. 基于滤波器的融合4.1 状态方程4.2 观测方程4.3 构建滤波器4.4 Kalman 滤波实际使用流程4…...

Java集合面试题:HashMap源码分析

文章目录一、HashMap源码二、HashMap数据结构模型图三、HashMap中如何确定元素位置四、关于equals与hashCode函数的重写五、阅读源码基本属性参考文章&#xff1a;史上最详细的 JDK 1.8 HashMap 源码解析参考文章&#xff1a;Hash详解参考文章&#xff1a;hashCode源码分析参考…...

华为OD机试 - 数组合并(Python),真题含思路

数组合并 题目 现在有多组整数数组, 需要将他们合并成一个新的数组。 合并规则, 从每个数组里按顺序取出固定长度的内容合并到新的数组中, 取完的内容会删除掉, 如果该行不足固定长度或者已经为空, 则直接取出剩余部分的内容放到新的数组中, 继续下一行。 如样例 1, 获得长度…...

Vue2创建移动端项目

一、Vscode Vscode 下载安装以及常用的插件 1、Vscode 下载 下载地址&#xff1a;Vscode 中文语言插件 搜索 chinese 主题 Atom 主题 文件图标主题 搜索 icon 源代码管理插件GitLens 搜索 GitLens Live Server _本地服务器 搜索 Live Server Prettier - Code formatt…...

vb.net做网站/深圳网络推广软件

问题定位&#xff1a;后台两个接口重名&#xff0c;走了优先级更高的接口&#xff0c;接口没有过滤CSRF&#xff1b; 一、csrf是什么 CSRF&#xff08;Cross-site request forgery&#xff09;跨站请求伪造&#xff0c;是一种常见的web安全漏洞&#xff0c;概括地说就是指&…...

wordpress 文章复制/百度问一问免费咨询

从Oracle10g开始&#xff0c;sqlplus提供了一个参数选项-prelim&#xff0c;用这个参数&#xff0c;在系统已经hang的时候。我们可以连接到SGA而不是数据库&#xff0c;也就是说没有session被创建。 一. 通过以下步骤可以获取系统信息&#xff1a;sqlplus -prelim / as sysdbao…...

网站建设后期维护方案/seo优缺点

FreeImage使用方法 一、FreeImage 简介 FreeImage 是一款免费的、开源的、跨平台&#xff08;Windows 、Linux 和Mac OS X &#xff09;的&#xff0c;支持20 多种图像类型的&#xff08;如BMP 、JPEG 、GIF 、PNG 、TIFF 等&#xff09;图像处理库。其最大优点就是采用插件驱…...

dedecms可以做什么网站/搜外友链

0. 目录 1. 插件介绍 2. 安装方式 3.使用方法 1. 插件介绍 JRebel插件 使用IDEA开发时修改了html或js或java代码都需要编译启动浪费了很多时间&#xff0c;所以可以借助热部署插件实现自动编码&#xff0c;每次修改完代码保存后就可以刷新页面看效果很方便&#xff0c;无需…...

杭州微网站建设/廊坊自动seo

叶面肥是农业生产中一种比较常见的施肥方式&#xff0c;吸收快用量少&#xff0c;效果也不错&#xff0c;但是使用上同样也有一些注意事项。那种情况下应该打叶面肥呢&#xff1f;作物根系衰老&#xff0c;根系活力一般&#xff0c;肥力能力降低&#xff0c;如果要给作物施肥料…...

wordpress内容页文字红色/公司企业网站制作

键盘小钢琴[C语言][自制]大一上最喜欢的一个作品。刚开始只是一个能自动发出小星星音乐的小程序XD效果图&#xff1a;代码如下&#xff1a;/*This is a small piano.这是一个小钢琴哦~*/#include#include //非缓冲输入#include#include#pragma warning(disable:4996) //to use …...