Klim5198
@Klim5198
Человечище-минималист

Не запускается c++ код в VS Code (компилятор – MSYS2 ucrt64), потому что в пути к файлу есть имена с русскими символами. Как это исправить?

Протестировал для путей, где все символы латинские – всё работает.

Так выглядит task.json:

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\msys64\\ucrt64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "test.cpp",
                "-o",
                "\"C:\\Users\\rgper\\Desktop\\Настройка-C++\\test.exe\""
            ],
            "options": {
                "cwd": "\"C:\\Users\\rgper\\Desktop\\Настройка-C++\""
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

Ошибка:

670a56593a6a9229219911.png
Искал ответ на вопрос, многие ведут к кодировке, но например "руками" через cmd или powershell, указав в команде g++ -g [name] -o "[path]" путь в кавычках, какие бы символы он не содержал, всё компилируется и запускается.
  • Вопрос задан
  • 164 просмотра
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Убрать русские символы и пробелы из пути.
Ответ написан
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
Добавить кавычки к пути в конфигурации или не использовать пробелы и не латинские символы.
UPD: варианты:
"\"C:/Users/rgper/Desktop/Настройка-C++/test.exe\""
"'C:/Users/rgper/Desktop/Настройка-C++/test.exe'"
"$'C:/Users/rgper/Desktop/Настройка-C++/test.exe'"

Roman Pervuhin, кроме того, при запуске задачи откройте диспетчер задач и посмотрите в каком виде аргументы были ему переданы - это намного упростит отладку. А гадать - можно бесконечно. И еще один момент: на скриншоте слэшы двойные, а должны быть одинарные, если конечно сообщение об ошибке показывает строку один-в-один, которая передаётся дебагеру.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы