Кракозябры сообщений компилятора в QtCreator

138
06 января 2019, 01:10

При использовании компилятора Microsoft в Qt-проекте в окне сборки выводятся сообщения об ошибках и предупреждениях с поломанной кодировкой. Например:

warning C4311: ЇаЁўҐ¤Ґ­ЁҐ вЁЇ®ў: гбҐзҐ­ЁҐ гЄ § вҐ«п Ё§ "Qt::HANDLE" ў "unsigned int"
warning C4302: ЇаЁўҐ¤Ґ­ЁҐ вЁЇ®ў: гбҐзҐ­ЁҐ Ё§ "Qt::HANDLE" ў "unsigned int"

Как можно вывести подобные сообщения в адекватном читабельном виде, на русском или английском языках?

Answer 1

Одно из возможных решений – скрыть для компилятора cl.exe файлы со строками языка ОС. В данном случае речь о локале ru-ru с идентификатором LCID, равным 1049. Полный список идентификаторов можно посмотреть здесь, стоит учесть, что там они указаны в шестнадцатеричном виде.

В зависимости от версии и разрядности компилятора, выбранного для Qt-проекта, расположение файла cl.exe может разниться. Например, для MSVC2015 64bit путь будет такой:

{Коренная папка Visual Studio}\VC\bin\amd64

В MSVC2017 структура пути несколько иная:

{Коренная папка Visual Studio}\VC\Tools\MSVC\{версия}\bin\Hostx86\x64

Имя конечной папки можно подсмотреть в настройках сборки проекта в QtCreator:

Для MSVC2017 x86_amd64, представленная на рисунке, будет как раз соответствовать Hostx86\x64 (завершающая часть пути).

По этому пути достаточно переименовать папку "1049", например, добавив подчёркивание "1049_", после чего выполнить пересборку проекта. Сообщения компилятора будут выведены на английском языке:

warning C4311: 'type cast': pointer truncation from 'Qt::HANDLE' to 'unsigned int'
warning C4302: 'type cast': truncation from 'Qt::HANDLE' to 'unsigned int'

Стоит заметить, что наличие папки с английским языком, т.е. "1033", является необходимым для неанглоязычной ОС. Доустановить или удалить вовсе некоторые языки можно в установщике Visual Studio:

READ ALSO
std::ofstream.write - синхронная или асинхронная?

std::ofstream.write - синхронная или асинхронная?

Использую в программе запись через поток довольно большого объема данных (6ГБ)

154
Как рисовать векторную графику в Windows API?

Как рисовать векторную графику в Windows API?

Чем можно рисовать векторное изображение в Windows API? Особенно интересует SVG в GDI+Есть ли смысл разбирать формат? Хотелось бы получить что-то...

177
Изменения внесённые на одной из веток проекта сразу переносятся на все другие ветки

Изменения внесённые на одной из веток проекта сразу переносятся на все другие ветки

При работе с проектом в intellij idea, после внесения каких либо изменений (изменение текста кода или создание файла) эти изменения сразу передаются...

175
Ошибка при подключении к Mysql со spring JdbcTemplate

Ошибка при подключении к Mysql со spring JdbcTemplate

Имеется ошибка, сервер работает нормально, но последнее время проскакивает эта ошибка очень часто, источников не нашел

181