如何在安装了WSL的Visual Studio代码中修复“ g ++:错误:helloworld.cpp:没有这样的文件或目录”?

时间:2019-05-24 10:00:06

标签: c++ json visual-studio-code

我在W10上安装了Visual Studio Code,以在安装了WSL的情况下(Ubuntu)运行一些代码。

我遵循了以下文章中的步骤:

https://code.visualstudio.com/docs/cpp/config-wsl

但是尝试在Visual Studio Code中编译代码时,我仍然收到以下错误消息:

"g++: error: helloworld.cpp: No such file or directory"

有3个.json文件的配置:

c_cpp_properties.json

{
"configurations": [
    {
        "name": "Win32",
        "defines": [
            "_DEBUG",
            "UNICODE",
            "_UNICODE"
        ],
        "compilerPath": "/usr/bin/g++",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "intelliSenseMode": "gcc-x64",
        "browse": {
            "path": [
                "${workspaceFolder}"
            ],
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        }
    }
],
"version": 4
}

launch.json

{
"version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/marc/projects/helloworld/helloworld.out",
            "args": ["-fThreading"],
            "stopAtEntry": true,
            "cwd": "/home/marc/projects/helloworld/",
            "environment": [],
            "externalConsole": true,
            "windows": {
                "MIMode": "gdb",
                "miDebuggerPath": "/usr/bin/gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
            "pipeTransport": {
                "pipeCwd": "",
                "pipeProgram": "c:\\windows\\sysnative\\bash.exe",
                "pipeArgs": ["-c"],
                "debuggerPath": "/usr/bin/gdb"
            },
            "sourceFileMap": {
                "/mnt/c": "${env:systemdrive}/",
                "/usr": "C:\\Users\\Marc\\AppData\\Local\\Packages\\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\\LocalState\\rootfs\\usr\\"
            }
        }
    ]
}

tasks.json

{
"version": "2.0.0",
"windows": {
    "options": {
        "shell": {
            "executable": "c:\\windows\\sysnative\\bash.exe",
            "args": ["-c"]
        }
    }
},
"tasks": [
    {
        "label": "build hello world on WSL",
        "type": "shell",
        "command": "g++",
        "args": [
            "-g",
            "-o",
            "/home/marc/projects/helloworld/helloworld.out",
            "helloworld.cpp"
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]

}

我在WSL Ubuntu上的路径项目是:

/home/marc/projects/helloworld/

此文件夹为空,因为Visual Studio Code应该通过WSL在当前包含以下内容的文件夹C:\ Users \ Marc \ projects \ helloworld.vscode中运行。

c_cpp_properties.json

helloworld.cpp

launch.json

tasks.json

如何解决?

谢谢

5 个答案:

答案 0 :(得分:1)

如果有人遇到此问题,请先阅读官方教程here

,然后使用VS Code设置gcc

我遇到了同样的问题,解决方案是将cpp和头文件移到项目文件夹(最多1个文件夹)中,该文件夹位于“ .vscode”文件夹之外。

dir结构应如下所示:

  

->项目目录(项目根文件夹)

     

->-> .vscode

     

->->-> json文件在此处(.vscode内)

     

->-> helloworld.cpp(项目文件在项目目录中)

答案 1 :(得分:1)

我也遇到了同样的问题。我来这里寻求解决方案,但我没有找到。 我尝试了我能做的一切,但最后,我做了一个简单的改变,解决了这个问题。 我在错误之前将我的代码命名为“Quick Sort.cpp”。现在我将其更改为“QuickSort.cpp”,命名时中间没有任何空格。现在它运行成功。这可能是也可能不是您错误的原因。但请确保你没有犯这个错误。

答案 2 :(得分:0)

似乎编译器无法找到源文件,更新task.json以使用完整路径来编译代码,

"tasks": [
    {
        "label": "build hello world on WSL",
        "type": "shell",
        "command": "g++",
        "args": [
            "-g",
            "-o",
            "/home/marc/projects/helloworld/helloworld.out",
            "${file}"//Just change this
        ],
        "group": {
            "kind": "build",
            "isDefault": true
        }
    }
]

${file}给出了文件的完整路径。

答案 3 :(得分:0)

不要使用任何空格字符保存文件,即单个空格/制表符....

保存没有空格的文件(文件名没有空格)并使用c++扩展名

答案 4 :(得分:-1)

将文件保存在helloworld文件夹中,例如projects \ helloworld \