ktkt's BLOG

何事も形から入るアニゲーオタのブログ

C++ HelloWorldまでのメモ

アニメグッズではなくC++の環境構築からHelloWorld出力までのメモです。

検索すれば情報がいっぱい出るけど私はメチャメチャ行き詰ったのでメモっておきます。

 

前置き

OS:Windows10 64Bit

開発ソフト:Visual Studio Code

コンパイラMinGW(gcc?)

 

やり方

大筋の進め方は以下のリンク先にて書かれている通りでした。

Visual Studio Codeと拡張機能のインストールまでは順調。
そしてMinGWのインストールも問題なくできました。

まず詰まったのはMinGW環境変数の設定でした。

環境変数

f:id:ktkt-ANIME2GAME:20171122230321p:plain
環境変数の設定にはユーザー環境変数とシステム環境変数があります。とりあえず私は今両方ともパスを通しています。ファイルパスは

C:\MinGW\bin

です。ですが上手くいかないOTL。再起動してもダメ。なぜ・・・。
とりあえず確認として環境変数で設定したパスをCtrl+Cしてエクスプローラーで開けるかやってみたら・・・開けなかった。結局しっかりと確かめたわけではないですがおそらく通していたファイルパスの後ろにスペースが紛れていたのではないかと。エクスプローラーからC:\MinGW\binを取り直してもう一度環境変数を設定。やっとgccを認識してくれた(*´Д`)

コンパイル

ですがまた行き詰ってしまいます。今度はコンパイルです。

PS C:\Users\user\Desktop> gcc -o program .\test01.cpp

↓エラー
C:\Users\user\AppData\Local\Temp\ccEk2YBV.o:test01.cpp:(.text+0x21): undefined reference to `std::cout'
C:\Users\user\AppData\Local\Temp\ccEk2YBV.o:test01.cpp:(.text+0x26): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'C:\Users\user\AppData\Local\Temp\ccEk2YBV.o:test01.cpp:(.text+0x2d): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'C:\Users\user\AppData\Local\Temp\ccEk2YBV.o:test01.cpp:(.text+0x34): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'C:\Users\user\AppData\Local\Temp\ccEk2YBV.o:test01.cpp:(.text+0x54): undefined reference to `std::ios_base::Init::~Init()'
C:\Users\user\AppData\Local\Temp\ccEk2YBV.o:test01.cpp:(.text+0x75): undefined reference to `std::ios_base::Init::Init()'collect2.exe: error: ld returned 1 exit status

参考サイトの通りにしたのに上手くいかない。間違っていたのはgccで、これをg++にすると動きました。

PS C:\Users\user\Desktop> g++ -o program .\test01.cpp

良かった(´ρ`)。実行はスムーズに行けました。

PS C:\Users\user\Desktop> .\program.exe
出力結果→Hello C++ World

何故g++にしたら動いたか。それはgccC言語用のコマンドで、g++がC++のコマンドだったからです。名前の通りですね。こんな所で時間使ってるのは私くらいでしょうか( ;∀;)

 

なんにせよやっとC++の勉強が始められる。良かったってことにしたい。