ベスパリブ

ベスパもってないです。バイク買いました。

cannot open source file "wchar.h" (dependency of "iostream") エラーを解消する

VSCodeC++環境を構築していました。

2018年版 C言語/C++ 入門者のための環境構築 (Windows編) - LYNCSブログ

C++で競プロをやるためのVSCodeの環境づくり - Qiita

上記のサイトを参考にしつつ構築していたら、VSCodeC++環境でcannot open source file "wchar.h" (dependency of "iostream")というエラーメッセージが出て困りました。ただ#include <iostream>しているだけなのに。

ちなみにWindows7 32bitです。VSCodeのextentionsはC/C++ (Preview)版。

そのときのc_cpp_properties.jsonの中身↓

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}",
                "C:/MinGW/include",
                "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++",
                "C:/MinGW/lib/gcc/mingw32/6.3.0/include/c++/mingw32"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compileCommands": "",
            "windowsSdkVersion": "8.1",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "msvc-x64",
            "compilerPath": "C:/MinGW/bin/g++.exe"
        }
    ],
    "version": 4
}

色々調べた結果、compilerPathでg++.exeを指定しておきながらincludePathはgccを設定しているのでは?ということを疑う。compilerPathをgccに設定し直すことに。

と思ったのですが、C:/MinGW/bin/gcc.exeが入っていない。なんで。

C++コンパイラhttp://www.mingw.org/からダウンロードしたのですが、なにか間違ったのだろうか。

よくわからなかったのでTDM-GCCC++コンパイラをインストールします。するとC:\MinGW\TDM-GCC-32.5.1\bingcc.exeがインストールできました。

c_cpp_properties.jsongcc環境に書き換えます。

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}",
                "C:\\MinGW\\TDM-GCC-32.5.1\\include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compileCommands": "",
            "windowsSdkVersion": "8.1",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "msvc-x64",
            "compilerPath": "C:\\MinGW\\TDM-GCC-32.5.1\\bin\\gcc.exe"
        }
    ],
    "version": 4
}

するとエラーが消えました。

どうやらコンパイラがちゃんとインストールできていなかったか、g++とgccの設定を混同していたのが原因っぽいです。よくわからないですけど。