QT5 MinGW切换MSVC编译问题

QT5 MinGW切换MSVC编译遇到编译不过问题

例:
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //中文注释
    QString str = tr("否");
    QString str1 = tr("否z");
    //中文注释啊
    ui->label->setText(str);
}

问题点描述:
源代码文件是无BOM的utf-8编码格式,QtCreator用MinGW编译OK,切换成MSVC后报错:
mainwindow.cpp(1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
mainwindow.cpp(23): error C2001: 常量中有换行符
mainwindow.cpp(24): error C2146: 语法错误: 缺少“)”(在标识符“QString”的前面)
mainwindow.cpp(24): error C2146: 语法错误: 缺少“;”(在标识符“QString”的前面)

解决方式1:
①在工程pro文件中添加

msvc {
    QMAKE_CFLAGS += /utf-8
    QMAKE_CXXFLAGS += /utf-8
}

解决方式2:
①将源代码文件改为有BOM的utf-8编码格式,
②在报错的文件开头加入(指定执行字符集)

#if _MSC_VER >= 1600
#pragma execution_character_set("utf-8")
#endif

源字符集和执行字符集都是utf-8不会出现乱码问题。

你可能感兴趣的:(QT,qt5,MinGW,MSVC)