Visual Studio属性表:为什么缺少字符集?

loo*_*oop 3 visual-studio-2010 propertysheet visual-studio visual-c++

我正在使用Visual Studio 2010 SP1.我注意到我可以向项目添加属性表,但我无法更改这些属性表中的字符集.我创建的任何属性表都缺少"字符集"选项.

任何人都可以解释为什么我不能使用属性表设置字符集?是否有一些禁止使用属性表无法设置的禁用属性列表?

谢谢

loo*_*oop 12

好的,我在硬盘上搜索了一下,找到了答案.

项目默认值(字符集是其中的一部分)定义要继承的默认MSBuild属性表.因此,当您在项目中选择字符集时,不会更改项目文件中的预处理器定义,而是项目文件将继承更改这些定义的字符集属性表.如果不选择字符集,则不会继承任何属性表.

Unicode和MBCS属性表位于:

C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.MultiByteCharSupport.props
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.unicodesupport.props
Run Code Online (Sandbox Code Playgroud)

MBCS属性表仅将_MBCS添加到编译器的预处理器定义(C/C++预处理器定义).Unicode属性表仅将UNICODE和_UNICODE添加到编译器的预处理器定义(C/C++预处理器定义)和资源编译器的定义(资源预处理器定义).就是这样.

  • 继上一次之后,这种情况正在发生,因为C:\ Program Files(x86)\ MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets的第363行通过查看CharacterSet来检查您是否正在使用MBCS而不是寻找是否定义了UNICODE.我通过将<CharacterSet> Unicode </ CharacterSet>添加到我的基本属性表的PropertyGroup来解决这个问题. (2认同)