错误
在mingw生成的项目,转换为VS编译器时通常会报些以下错误(C4819警告,C2001错误,C2143错误)
原因及解决方式
这一般是由于字符编码引起的,在源代码文件中包含了中文字符导致的。Qt Creator 生成的代码文件默认是UTF8格式,而VS生成的源代码文件是其它字符集(ANSI或GBxxx),要想使VS正确编译Mingw源代码文件,经验证有以下三种方式:
- 将源码文件改为UTF8-BOM格式。
- 在每个源码文件上方添加 #pragma execution_character_set("utf-8") ,此方式已过时。
- 在Qt工程pro文件中添加参数。
以上三种方式1和2不在介绍,比较简单。详细介绍一下第3种方式
在Qt工程pro文件中添加参数
在Qt工程pro文件中添加参数有两种方式,这两种方式是等价的,推荐使用第一种方式。
方式一
msvc{
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
}
方式二
QMAKE_CXXFLAGS += /source-charset:utf-8
QMAKE_CXXFLAGS += /execution-charset:utf-8
加入编译选项后对比,从上至下分别为,方式一、方式二、未添加编译选项:
以下信息为在添加编译选项方式一后,在VS工程中查看的编译选项添加位置
参考链接:
将源字符集和执行字符集设置为 UTF-8
/source-charset(设置源字符集)