前提・実現したいこと
下記のC++コードdemo.cppを記述しましたが、何も出力されませんでした。
エラーもなくコンパイルもできたので、環境設定の問題かと思います。
対処法のご教授お願い致します。
(追記)実行環境はVisual Studio Codeです。
(追記)実行時のスクリーンショットを追加しました。(白塗り部分はユーザー名です)
![]
該当のソースコード
C++
1#include <iostream> 2#include <string> 3 4using namespace std; 5 6int main(){ 7 string name = "John"; 8 cout << name << endl; 9 return 0; 10} 11
発生している問題
以下のようにコンパイル・実行しても何も出力されませんでした。
$ g++ demo.cpp $ .\a.exe $ //ここに本来Johnが出力されるはず
c_cpp_properties.jsonの中身
{ "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "windowsSdkVersion": "10.0.19041.0", "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.28.29910/bin/Hostx64/x64/cl.exe", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "windows-msvc-x64" } ], "version": 4 }
試したこと
次のコードは正しく動作しました。stringを使用しない場合のコードです。
C++
1#include <iostream> 2#include <string> 3 4using namespace std; 5 6int main(){ 7 cout << "John" << endl; 8 return 0; 9} 10
(追記)g++ -o a.exe -v -Wall -Wextra -pedantic -std=c++17 demo.cppの実行結果は以下の通りです。ただし、***はユーザー名です。
Using built-in specs. COLLECT_GCC=C:\MinGW\bin\g++.exe COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe Target: mingw32 Configured with: ../src/gcc-9.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-static --enable-shared --enable-threads --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --enable-libgomp --disable-libvtv --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --disable-build-format-warnings --prefix=/mingw --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --enable-nls --with-pkgvr sion='MinGW.org GCC Build-20200227-1' Thread model: win32 gcc version 9.2.0 (MinGW.org GCC Build-20200227-1) COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586' c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/cc1plus.exe -quiet -v -iprefix c:\mingw\bin../lib/gcc/mingw32/9.2.0/ demo.cpp -quiet -dumpbase demo.cpp -mtune=generic -march=i586 -auxbase demo -Wall -Wextra -Wpedantic -std=c++17 -version -o C:\Users***\AppData\Local\Temp\ccjKtxsx.s GNU C++17 (MinGW.org GCC Build-20200227-1) version 9.2.0 (mingw32) compiled by GNU C version 9.2.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.21-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 ignoring nonexistent directory "c:\mingw\bin../lib/gcc/mingw32/9.2.0/../../../../mingw32/include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include/c++"ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include/c++/mingw32" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include/c++/backward" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include" ignoring duplicate directory "/mingw/lib/gcc/mingw32/9.2.0/../../../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../include" ignoring duplicate directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/include-fixed" ignoring nonexistent directory "c:/mingw/lib/gcc/../../lib/gcc/mingw32/9.2.0/../../../../mingw32/include" ignoring duplicate directory "/mingw/include" #include "..." search starts here: #include <...> search starts here: c:\mingw\bin../lib/gcc/mingw32/9.2.0/include/c++ c:\mingw\bin../lib/gcc/mingw32/9.2.0/include/c++/mingw32 c:\mingw\bin../lib/gcc/mingw32/9.2.0/include/c++/backward c:\mingw\bin../lib/gcc/mingw32/9.2.0/include c:\mingw\bin../lib/gcc/mingw32/9.2.0/../../../../include c:\mingw\bin../lib/gcc/mingw32/9.2.0/include-fixed End of search list. GNU C++17 (MinGW.org GCC Build-20200227-1) version 9.2.0 (mingw32) compiled by GNU C version 9.2.0, GMP version 6.1.2, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.21-GMP GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 94ad7bdd461e5339f6b4ce0e10df4842 COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/as.exe -v -o C:\Users***\AppData\Local\Temp\ccUZTCx9.o C:\Users***\AppData\Local\Temp\ccjKtxsx.s GNU assembler version 2.32 (mingw32) using BFD version (GNU Binutils) 2.32 COMPILER_PATH=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/;c:/mingw/bin/../libexec/gcc/;c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ LIBRARY_PATH=c:/mingw/bin/../lib/gcc/mingw32/9.2.0/;c:/mingw/bin/../lib/gcc/;c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/lib/;c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../ COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586' c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/collect2.exe -plugin c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/liblto_plugin-0.dll -plugin-opt=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users***\AppData\Local\Temp\ccCOwQnb.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmsvcrt -Bdynamic -u ___register_frame_info -u ___deregister_frame_info -o a.exe c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../crt2.o c:/mingw/bin/../lib/gcc/mingw32/9.2.0/crtbegin.o -Lc:/mingw/bin/../lib/gcc/mingw32/9.2.0 -Lc:/mingw/bin/../lib/gcc -Lc:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/lib -Lc:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../.. C:\Users***\AppData\Local\Temp\ccUZTCx9.o -lstdc++ -lmingw32 -lmingwex -lgcc_s -lgcc -lmoldname -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lmingwex -lgcc_s -lgcc -lmoldname -lmsvcrt c:/mingw/bin/../lib/gcc/mingw32/9.2.0/crtend.o COLLECT_GCC_OPTIONS='-o' 'a.exe' '-v' '-Wall' '-Wextra' '-Wpedantic' '-std=c++17' '-shared-libgcc' '-mtune=generic' '-march=i586'
「発生している問題」の方で提示しているコマンドラインでの実行はMinGWのg++のようですが、「c_cpp_properties.jsonの中身」ではcompilerPathにMSVC(Visual Studio 2019)のcl.exe をセットしていますね。なんか変です。
デフォルトがこの設定になっていたのですが...。
どう直せば動作するのでしょうか。
jsonファイルの中身を触ったことが無いので勝手に変更するのが不安です。
MinGWをインストールしているならば、そのパスを通すだけです。
compilerPathをg++.exeがあるパスへ変えましょう。
ちなみに自分のほうでは、そのようにして文字が出るのを確認しました。
有り難うございます。
試してみます。
ardinさん
compilerPathをC:/MinGW/bin/g++.exeに、intelliSenseModeをgcc-x86に変更しましたが出力されませんでした。
環境設定に詳しくないもので申し訳ありません。
c_cpp_properties.json はエディタの設定です。コンパイラの設定ではないのでそこをいじっても意味はありません。
g++ --version
の結果を書いて頂けませんか。
また、複数の MinGW をインストールしていませんか?
過去に見た事例ですが、複数の MinGW をインストールしていて、パスの関係で違うバージョンの DLL を参照したために正しく実行できなかったというのがありました。
where g++
もやってみてください。
コメント有り難うございます。
>g++ --versionの結果
g++.exe (MinGW.org GCC Build-20200227-1) 9.2.0
>where g++の結果
C:\MinGW\bin\g++.exe
また、複数のMinGWはインストールしていないと思います。
C言語を始めるために一度インストールしただけなので重複はないと思います。
PATH の関係でそのような状況になる場合もあるようです。
"C:\MinGW\bin" を PATH の先頭に持っていては如何でしょうか?
すみません、PATHの先頭に持っていくとはどういう事でしょうか?
環境変数設定で一番上に持っていくという事ですか?
そういうことです。
システムのプロパティで環境変数を編集する場合は、システム環境変数の一番上にしてください。
ユーザ環境変数よりシステム環境変数の方が優先されます。
また、コマンドプロンプトで実行する前に、PATH を表示させて、先頭にあるかどうか確認してみてください。
有り難うございます。
試してみます。
システム環境変数の一番上に"C:\MinGW\bin"を配置しました。
>echo %path% を用いて確認もできました。
しかし、前と同様、文字列Johnは出力されませんでした。
度々すみません。
そうすると別の問題のようですね。
お手数をおかけして申し訳なかったですが、私には思い当たることはないです。
こちらこそお手数お掛けしました。
有り難うございます。
それにしても、コンパイル可能でエラーも出ないのに正しく出力されないのは変ですね...。
C++を勉強し始めようとした矢先なのでミスがあったら申し訳ないです。
回答2件
あなたの回答
tips
プレビュー