当前位置 博文首页 > haimianjie2012的专栏:visual studio(VS2015)路径和工程属性设

    haimianjie2012的专栏:visual studio(VS2015)路径和工程属性设

    作者:[db:作者] 时间:2021-09-01 10:32

    visual studio(VS2015)路径和工程属性设置
    VS 2015新建一个工程,右键属性,打开**工程属性页。
    1.常规选项:
    这里写图片描述
    a)输出目录
    输出目录就是.exe,.ilk,*.pdb文件所在目录: (SolutionDir) (Configuration)\
    其中:
    $(SolutionDir)为解决方案所在目录,D:\MY_Projects\TestDLL1

    $(Configuration)如果是debug模式则为Debug,如果是release模式就是Release。

    b)中间目录
    中间目录就是生成的临时文件目录,$(Configuration)\的意思是临时文件放在当前工程目录的Debug或则Release文件夹下面
    c)平台工具集
    平台工具集设置成”Visual Studio 2015-Windows XP(v140_xp)”,这样就可以保证编译的程序在windows系统中也能够运行。
    d)字符集
    unicode和多字节字符集是两种不同的编码方式,不同的编码方式下,所对应的一些函数是不兼容的。一种编码格式,Unicode 2个字节表示所有的字符,多字节是一个字节表示英文,两个就表示汉字。
    如果你新的工程是Unicode的,就用Unicode开发,摒弃多字节编码,多字节编码弊端太多了。
    其实改起来很简单,你把所有的char都改成TCHAR,如果能用CString,尽量用CString。所有字符串函数都换上带_t的版本,比如_tsprintf()、_tcscpy之类的……因为这些东西都是同时兼容Unicode和ANSI的,所以改起来很容易。
    工程到底会以哪种编码方式去编码,是根据根据“项目属性”中配置的预编译宏UNICODE来决定的。
    Unicode是一种编码表格,例如,一个汉字规定一个代码,类似GB2312-1980;UTF-8并不是一种编码方式,而只是一种传送和存储的格式,网页文本保存为utf-8格式,就不会出现乱码。传输UTF-8需要一个字节,而unicode传输需要两个字节快,因此,UTF8-8传输速度高于unicode,它是为了传输unicode而想出来的再编码方法。
    2.调试选项
    a)命令参数
    使用调试时从哪里启动exe文件,默认 (TargetPath) (SolutionDir)$(Configuration)\。

    b)工作目录
    默认$(ProjectDir),表示工程文件目录。【工作目录】表示进行某项操作的目的目录,会随着OpenFileDialog、SaveFileDialog等对象所确定的目录而改变。
    “工作目录”属性作用是程序运行后唯一识别的默认目录,是程序运行过程中默认读取的目录,代码中用GetCurrentDirectory之类的函数获取,工作后只认识这个目录。
    3.C/C++选项
    a)常规选项——附加包含目录:引用头文件(*.h)所在的路径
    b)预处理器
    这里写图片描述
    如上图中,在这里,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 

    那么,当你的环境中写了UNICODE时,这一段就会编译:

    #define __T(x)      L##x
    #define _T(x)       __T(x)

    如果没有写UNICODE,那么上面这段就不编译,而是下面这段被编译:

    #define __T(x)      x

    这样,只要你的字符串用了_T(“somechar”),那么,在有UNICODE的时候,就是L”somechar”;在没有UNICODE在时候,就是它本身”somechar”了。
    c)预编译头
    不使用预编译头,如果使用容易出现各种错误。
    4.链接器选项
    a)常规——输出文件,默认值为: (OutDir)$(ProjectName) {TargetExt}
    TargetExt.exe?.dll (OutDir)就是配置属性-》常规下面的输出目录路径,本文中配置为: (Solution

    下一篇:没有了