链接器—常规—输出文件
这里的输出文件指的是最终生成的exe文件
C/C+±–常规—附加包含目录
附加包含目录指的是当前项目的文件目录设置;
包含目录指的是整个电脑系统下的文件目录设置,一般是设置附加包含目录;
一般先从包含目录下寻找.h文件,当包含目录下找不到.h文件时,再从附加包含目录下寻找.h文件;
附加包含目录必须直接能找到.h文件,比如说camera—sdk-----3.h,不能将附加包含目录设置到camera,再在项目中#include “sdk/3.h”,必须在附加包含目录中设置到camera—sdk,再在项目中"3.h"。
这里指的是需要include的一些头文件所在的 目录,可以提前在项目文件中建立好include文件,然后在这里设置,以后将一些自定义的include头文件放在这个文件夹下。
提前在项目文件夹下建立好include文件夹
链接器–常规—附加库目录
这里指的是lib文件存放的目录,可以提前在项目文件夹下,先把lib文件夹设置好。
同时还要设置好lib文件的名字
在链接器—输入—附加依赖项中,将lib文件加进去
这里就类似于代码中
#pragma comment(lib, “learnVS.lib”)
配置属性—常规
输出目录:这里指的是输出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
配置属性—常规—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文件,另一个项目可以在这里加载这个文件,就会自动得到项目的属性设置了;