質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

45741閲覧

VSCodeのincludeエラーを直したい

namespace_nqiiv

総合スコア5

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1グッド

1クリップ

投稿2020/02/26 10:46

前提・実現したいこと

C++を学習しています。VSCodeでC++のプログラムを書いているのですが、includeエラーが消えません。消えなくてもコンパイルは普通に通りますし正常に実行できるのですが、エラーが消えないのは気になるので質問させていただきました。どなたかご教示いただければと思います。

該当のソースコード

C++

1#include <iostream>

試したこと

まずこのようなエラーメッセージが出ました。

#include エラーが検出されました。includePath を更新してください。この翻訳単位 (ファイル名.cpp) では、波線が無効になっています。C/C++(1696) ソース ファイルを開けません "iostream"C/C++(1696)

includePathを更新しろ、とのことなのでc_cpp_properties.jsonを編集しました。
iostreamが入っているフォルダを探してそのパスをincludePathに追加し、そしてコンパイラのパスをcompilerPathに追加しました。

JSON

1{ 2 "configurations": [ 3 { 4 "name": "Win32", 5 "includePath": [ 6 "${workspaceFolder}/**", 7 //この行を追加しました 8 "C:/msys64/usr/lib/gcc/x86_64-pc-msys/9.1.0/include/c++/**" 9 ], 10 "defines": [ 11 "_DEBUG", 12 "UNICODE", 13 "_UNICODE" 14 ], 15 "cStandard": "c11", 16 //この行を追加しました 17 "compilerPath": "C:/msys64/usr/bin/g++.exe", 18 "intelliSenseMode": "msvc-x64" 19 } 20 ], 21 "version": 4 22}

エラーメッセージは次のように変わりました。

#include エラーが検出されました。includePath を更新してください。この翻訳単位 (ファイル名.cpp) では、波線が無効になっています。C/C++(1696) ソース ファイルを開けません "locale.h" (dependency of "iostream")C/C++(1696)

iostreamは認識したようですが、locale.hが読み込めないようです。
locale.hはiostreamが入っているフォルダ(c++)の中に一緒にありました。

環境

エディタは最新版のVSCode、ターミナルはmsys2、コンパイラはg++9.1.0を使用しています。

yuki23👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

"intelliSenseMode""gcc-x64" に変えてみて下さい

追記
MSYS2 のパッケージマネージャーでは mingw の gcc と msys の gcc を選べますが、おそらく msys の gcc をインストールしたのではないかと思います。これは msys の外(VSCodeのintellisenseなど)では使うことができません。
mingw をインストールするには

$ pacman -S mingw-w64-x86_64-toolchain

すると、C:\msys64\mingw64\bin\g++.exe にインストールされます。詳しくはインストールされたという方に相談するか、検索して下さい。
こちらを compilerPath に使えばエラーは出ないはずです。
なお、includePath の方はおそらく不要です。

投稿2020/02/26 11:44

編集2020/02/26 14:56
yuki23

総合スコア1448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namespace_nqiiv

2020/02/26 12:12

ご回答ありがとうございます。試してみましたが改善されず、エラーメッセージも変わりませんでした。
yuki23

2020/02/26 12:44

ワークスペース内で複数のフォルダを開いていませんか? 一つだけにしてみて下さい
namespace_nqiiv

2020/02/26 13:38

一つしか開いていないのですが......。
yuki23

2020/02/26 13:47

ではそのフォルダの中に複数のc_cpp_properties.jsonがありませんか?
yuki23

2020/02/26 14:09 編集

Shift+Ctrl+P → C/C++: Edit Configurations (UI) を開いてエラーになっているところはありませんか? 私の環境では MSYS2 のコンパイラーのパスは "C:/msys64/usr/bin/g++.exe" ではないのですが、どうやってコンパイラーをインストールしましたか?
namespace_nqiiv

2020/02/26 14:42

>Shift+Ctrl+P → C/C++: Edit Configurations (UI) を開いてエラーになっているところはありませんか? ありませんでした。 >私の環境では MSYS2 のコンパイラーのパスは "C:/msys64/usr/bin/g++.exe" ではないのですが、どうやってコンパイラーをインストールしましたか? もしかしたら僕がコンパイラの場所を勘違いしているかもしれないです。よろしければyuki23さんの環境でのコンパイラのパスをお教えいただけませんか?コンパイラのインストール方法は他人に任せてしまったのでよくわからないです、すみません。
namespace_nqiiv

2020/02/26 14:46

>ではそのフォルダの中に複数のc_cpp_properties.jsonがありませんか? いえ、一つだけでした
namespace_nqiiv

2020/02/26 15:34

ありがとうございます!!!mingwをインストールしたところ直りました。初歩的なことでお手を煩わせてしまい申し訳ありません。迅速かつ丁寧なご対応に感謝いたします。
ysk_snn

2020/09/29 05:53

横からすごく初歩的な質問をしてしまい、大変申し訳ございません。 私もつまっていて、同じ対処法を試そうとしています。 mingw をインストールするための、 $ pacman -S mingw-w64-x86_64-toolchain はどこから実行するものでしょうか...? コマンドプロンプトから行うと、 「'pacman' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と表示されてしまいます...
yuki23

2020/09/29 07:11

ysk_snnさん MSYS2のコンソールです。「msys2 mingw インストール」などのキーワードで検索してみてください。
ysk_snn

2020/09/29 07:41

ありがとうございます!!
guest

0

なら、追加した行を

"C:/msys64/usr/lib/gcc/x86_64-pc-msys/9.1.0/include/**"

に修正してみればどうでしょう

投稿2020/02/26 11:08

y_waiwai

総合スコア88024

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

namespace_nqiiv

2020/02/26 12:15

ご回答ありがとうございます。試してみたのですがエラーメッセージは変わりませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問