关于Visual Studio C++项目属性设置的说明

news2024/11/19 18:41:33

链接器—常规—输出文件
这里的输出文件指的是最终生成的exe文件
在这里插入图片描述
C/C+±–常规—附加包含目录
这里指的是需要include的一些头文件所在的 目录,可以提前在项目文件中建立好include文件,然后在这里设置,以后将一些自定义的include头文件放在这个文件夹下
在这里插入图片描述
提前在项目文件夹下建立好include文件夹
在这里插入图片描述
链接器–常规—附加库目录
这里指的是lib文件存放的目录,可以提前在项目文件夹下,先把lib文件夹设置好。
在这里插入图片描述
同时还要设置好lib文件的名字
在链接器—输入—附加依赖项中,将lib文件加进去
这里就类似于代码中
#pragma comment(lib, “learnVS.lib”)

在这里插入图片描述
同时,所需的dll文件可以放在exe文件同级目录下

配置属性—常规
在这里插入图片描述
输出目录:这里指的是输出exe文件所在的目录,也可以提前设定好bin文件
中间目录:这里指的是中间生成的临时文件,可以提前设定好temp文件
目标文件名:就是生成的exe文件的名字

配置属性—平台工具集
Visual Studio的版本有很多种,打开不同的项目文件所需要VS版本不一致,高版本兼容低版本,因此可以设定打开的VS版本来编译项目。
VS各版本对应的工具集版本号如下:

-Visual Studio 2019: V142
-Visual Studio 2017: V141
-Visual Studio 2015: V140
-Visual Studio 2013: V120
-Visual Studio 2012: V110
-Visual Studio 2010: V100
-Visual Studio 2008: V90
-Visual Studio 2005: V80
-Visual Studio 2003: V71
-Visual Studio 2002: V70
-Visual Studio 6: V60

配置属性—常规—项目属性值—字符集
在这里插入图片描述

  • 多字节字符集:
    字符的宽度可以是一个字节也可以是两个字节;对于英语单词而言,一个英语单词占用一个字节,但是对于中文这些而言,不属于最早的ASCII字符,一个中文占用两个字节;多字节占用内存小,但是查找速度会变慢;
  • Unicode字符集:
    统一将字符都占用两个字节;英文字符会在高位补0;Unicode查找字符更快,但是占用内存会变大;国际上为了通用更多语言,会优先使用Unicode字符集;
    因字符集不同,所以一些代码注意事项:
    (1) _T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式;
    比如说:cout << _T(“你好”) << endl;
    L" “的作用是将ANSI字符串转为Unicode字符串,
    比如:cout << L"你好” << endl;
    (2)wchar_t与char的区别:
    char占用一个字节,可用字符串处理函数:strcat( ),strcpy( ), strlen( )等以str打头的函数。wchar_t 占用两个字节,可用字符串处理函数:wcscat(),wcscpy(),wcslen()等以wcs打头的函数。为了让编译器识别Unicode字符串,必须以在前面加一个“L”,例如: wchar_t *szTest=L"This is a Unicode string";

配置属性—常规—MFC的属性
有三种选择:
(1)使用标准 Windows库:即不使用MFC;
(2)在静态库中使用MFC:程序编译时把用到的MFC DLL 的二进制代码编译到exe中,这样的话程序的体积较大,但优点是不需要计算机使用特定的MFC的dll文件。
(3)在共享DLL中使用MFC:程序编译时不会把MFC DLL的二进制代码编译到exe中,这样的话程序的体积较小,但缺点是在没有MFC DLL的机器上运行会出现错误:“无法启动程序……,由于应用程序配置不正确,未能启动此应用程序。”
C/C++ —预处理器—预处理器定义
在这里插入图片描述
WIN32、_DEBUGE、_UNICODE等其实是一些宏定义,在这里写上这些,相当于在本工程所有的文件中都写上了:

#define WIN32
#define _DEBUG
#define _UNICODE

这样,就可以达到一个多一个同一个代码在不同的配置环境在编译的结果文件不一样,从而实现跨平台。比如,在VC中,因为要有的环境是UNICODE,有些则不是,同一份代码为了在两种环境下都可以用,那么就会有以下宏定义(其实这就是twhar.h中的代码):

#ifdef  _UNICODE
typedef wchar_t     TCHAR;
#define __T(x)      L##x
#define _T(x)       __T(x)
#else
#define __T(x)      x
typedef char        TCHAR;
#endif

C/C++ —预处理器—代码生成—启用增强指令集
可选用 流式处理 SIMD 扩展 2 (/arch:SSE2) (/arch:SSE2)、 流式处理 SIMD 扩展 2 (/arch:SSE2) (/arch:SSE2) 进行加速
C/C++ —预处理器—代码生成—运行库
可以采用的方式有:多线程(/MT)、多线程调试(/MTd)、多线程DLL(/MD)、多线程调试DLL(/MDd)、单线程(/ML)、单线程调试(/MLd)

  • MT选项
    链接LIB版的C和C++运行库。在链接时就会在将C和C++运行时库(LIBCMT.LIB、LIBC.LIB)集成到程序中,程序体积会变大。

  • MTd选项
    LIB的调试版。

  • MD选项
    使用DLL版的C和C++运行库,这样在程序运行时会动态的加载对应的DLL,程序体积会减小,缺点是在系统没有对应DLL时程序无法运行(需添加MSVCPxx.DLL、MSVCRxx.DLL)。

  • MDd选项
    表示使用DLL的调试版。

带T的链接静态库lib;带D链接动态库dll;带d为调试版本,库名加d

运行库选择错误时,会有以下几种状况:
(1)LNK2038
在这里插入图片描述当引用的库和当前项目设置的运行库不一致时,会出现error LNK2038: 检测到“RuntimeLibrary”的不匹配项…
(2) LNK2005
在这里插入图片描述
当引用的库或当前的库有一个使用/MT时,会出现error LNK2005:…
所以若当前VC项目不引用其他VC项目,则可以使用任意一种运行库选项;若需要引用其他VC项目,则所有的项目都需设置运行库选项为/MD。
链接器—常规—启动增量链接
在这里插入图片描述
一般的,Debug版本开启增量链接,会在源代码基础上增加代码,不会重新编排变量的内存地址,生成时不会全部重新编译,缺点是使代码臃肿;Release是关闭开启增量链接,编译Lib时会重新编译,重新分配变量的内存地址;
保存设置好的VS项目属性
有时候可以将自己配置的VS文件的项目属性保存下来,供另一个项目文件调用,这样就不需要重复更改项目属性了,也方便别人VS项目文件属性不一致,导致编译失败;

  • 新建工程属性

打开视图—其他视图—属性管理器
在这里插入图片描述
在四种模式下选择一种,添加新项目属性表
在这里插入图片描述
会得到一个props文件,另一个项目可以在这里加载这个文件,就会自动得到项目的属性设置了;
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/148927.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python之父强烈推荐,爬虫入门经典《python3网络爬虫开发实战》

实操性很强的一本工具书&#xff0c;由浅入深&#xff0c;深入浅出。前面从环境配置到爬虫原理、基本库和解析库的使用再到数据存储&#xff0c;一步步把基础打好&#xff0c;然后再分门别类介绍了Ajax、动态页、验证码、App的爬取、识别等&#xff0c;还讲解了代理使用、模拟登…

【Java】Spring中Aware接口的作用

Spring的几个aware接口的用法 ApplicationContextAware public interface ApplicationContextAware extends Aware {void setApplicationContext(ApplicationContext applicationContext) throws BeansException; }该接口仅有一个方法&#xff0c;用于设置Spring容器上下文。…

浅谈Springboot自动配置

目录 1.自动配置原理 2.自动配置案例 3.总结 1.自动配置原理 在一个Springboot程序中&#xff0c;我们只需要在main程序中使用springBootApplication注解即可标记为一个一个Springboot程序&#xff0c;然后使用 SpringApplication.run(TestMain.class,args) 代码即可创建…

多把锁,死锁,活锁,饥饿

目录 多把锁 多把锁的优缺点 活跃性 死锁 手写死锁 死锁的四个必要条件 定位死锁 jconsole运行命令 jps 定位进程 id&#xff0c;再用 jstack 定位死锁 死锁的三种场景 一个线程一把锁 两个线程两把锁 多个线程多把锁 解决死锁 活锁 饥饿 多把锁 现在有一个场…

Kali Linux ping扫描命令

1.命令介绍 kali的ping命令和centos linux的评命令许多参数都差不多&#xff0c;可以看一下我之前写的linuxping命令https://blog.csdn.net/qq_44652591/article/details/128439494 ping扫描是ping整个网络IP地址或单个IP&#xff0c;以查明它们是否活跃和响应的过程。ping也是…

用Kettle调用Restful API 接口

1 概述 kettle 中文名称叫水壶&#xff0c;是纯 java 开发&#xff0c;开源的 ETL工具&#xff0c;用于数据库间的数据迁移 。可以在 Linux、windows、unix 中运行。有图形界面&#xff0c;也有命令脚本还可以二次开发。当然它也可以用来调用Restful API 来采集数据&#xff0c…

【安全硬件】Chap.6 IC和半导体产业的全球化;芯片生产猜疑链与SoC设计流程;可能会存在的安全威胁: 硬件木马、IP盗版、逆向工程、侧信道攻击、伪造

【安全硬件】Chap.6 IC和半导体产业的全球化&#xff1b;芯片生产猜疑链与SoC设计流程&#xff1b;可能会存在的安全威胁: 硬件木马、IP盗版、逆向工程、侧信道攻击、伪造背景1. IC和半导体产业的全球化2. 芯片生产猜疑链——Untrusted IC Supply Chain Threats可能会存在的安全…

我只是把握好了这3点,1个月后成功拿下大厂offer!

目录 一、写在前面二、技术广度的快速准备三、技术深度的快速准备四、基础功底的快速准备五、下篇预告 一、写在前面 春节过后&#xff0c;即将迎来的是一年一度的金三银四跳槽季。 假如你准备在金三银四跳槽的话&#xff0c;那么作为一个Java工程师&#xff0c;应该如何利…

【Shell】mksh运行分析

mksh运行分析 Shell shell&#xff0c;壳子&#xff0c;即操作系统的壳子。这层壳子套在操作系统上&#xff0c;为用户提供与操作系统的交互手段。 操作系统的交互方式一般有&#xff0c;图形化交互(GUI)和命令行交付(CLI,command-line interface)。 套在操作系统上的壳子 …

虚拟机栈

虚拟机栈简介虚拟机栈的出现背景内存中的栈与堆虚拟机栈基本内容虚拟机栈的特点虚拟机栈的异常设置栈内存大小栈的存储单位栈中存储什么&#xff1f;栈运行原理栈帧的内部结构局部变量表认识局部变量表关于Slot的理解Slot代码示例Slot的重复利用静态变量与局部变量的对比补充说…

oracle安装教程

1安装和创建用户 1.1.安装以及常见问题 oracle安装教程 安装中 system密码改成root oracle卸载&#xff0c;除此之外清除C:\Program Files内的oracle 需要准备oracle安装包和plsql界面化操作工具 重装报错bug&#xff1a; plsql操作 plsql注册码 product code: ke4tv8t5jtxz…

java动态代理-面向切面代码样例

1.测试入口import java.lang.reflect.Proxy;/*** 面向切面测试* author epsoft-hy**/ public class test {public static void main(String[] args) {Class<?>[] cls {UserDao.class};//接口一个String classpath"util.aop.UserDaoImp";//访问类路径test2(tes…

【学vue跟玩一样】快速学会常用指令及如何理解生命周期

一&#xff0c;内置指令1.v-textv-bind:&#xff0c;单向绑定解析表达式v-model :双向数据绑定v-for:遍历数组/对象/字符串v-on :绑定事件监听,可简写为v-if :条件渲染(动态控制节点是否存存在)v-else :条件渲染(动态控制节点是否存存在)v-show:条件渲染(动态控制节点是否展示)…

3. Rstudio【可视化导入】数据

b站课程视频链接&#xff1a;https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新&#xff0c;但是要花钱&#xff0c;我花99元买了&#xff0c;感觉不错&#xff09;&#xff1a;https://ke.qq.com/course/3707827#term_id103855009 &nbsp&#xff1b; 本笔记…

SigmaStar空板烧录

一、硬件连接 在官方给的SDK文档中&#xff0c;有描述如何使用ISP TOOL给空板烧录程序&#xff0c;但坑的是&#xff0c;文档中并没有写这个上位机工具需要配合Mstar专门的烧录工具来使用&#xff0c;烧录工具如下图所示。 上图中有三根连接线&#xff0c;示意图如下。目标板的…

HTML与CSS基础(九)—— 综合项目(CSS样式补充、项目前置认知、项目结构搭建)

目标能够在网页中使用 精灵图 能够使用 背景大小属性 &#xff0c;设置背景图片的大小 能够认识 CSS书写顺序&#xff0c;提高代码专业性和浏览器渲染性能 能够使用的专业方式完成 项目结构搭建 和 基础公共样式 能够应用已学技术知识 完成小兔鲜儿项目一、项目样式补充目标&am…

URL中绝对路径与相对路径拼接问题总结

URL中绝对路径与相对路径拼接问题总结1. 基础环境2. 测试2.1 总结2.2 本地文件url1. 基础环境 这里用nginx的docker镜像构建了一个服务&#xff0c;步骤如下&#xff1a; sudo docker pull nginxsudo docker run -d --name nginx01 -p 8083:80 nginx nginx发布的根目录是/us…

Redis安装及常用数据类型介绍

1、redis介绍1.1、redis是一个开源的key-value存储系统1.2、和Memcached类似&#xff0c;它支持存储的value类型相对很多&#xff0c;包括String、list、set、zset以及hash类型。1.3、这些数据类型都支持push/pop、add/remove及取交集并集及更丰富的操作&#xff0c;而且这些操…

LeetCode[264]丑数II

难度&#xff1a;中等题目&#xff1a;给你一个整数 n&#xff0c;请你找出并返回第 n个 丑数 。丑数 就是只包含质因数 2、3和/或 5的正整数。示例 1&#xff1a;输入&#xff1a;n 10输出&#xff1a;12解释&#xff1a;[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组…

【NKOJ三校 初中新年大联欢DIV2】考试游记

目录 看不见的手ljj的方块零它来了宝石转换ljj的距离零它走了彩蛋 题目 【A NKOJ-P8629】 看不见的手 40pts 考试思路&#xff1a; 这道题一看数据范围就知道是O(n)O(n)O(n)的结论题&#xff0c;考试的时候脑子抽筋偏分输出1得了40pts&#xff1b; 正解&#xff1a; 他说…