std:endl を使うと、アプリケーションが動作を停止する

問題

  • std:endl を使ったプログラムを実行すると、APPCRASH が発生する。
  • デバッガー上で実行すると、SIGILL (Illegal instruction) が発生している。

環境

原因

実行時リンクに MinGW の libstdc++-6.dll ではなく、マイクロソフトの libstdc++-6.dll がリンクされたため。

解決方法

A

実行ファイルと同じディレクトリーに MinGW の libstdc++-6.dll をコピーする。

B

endl の代わりに '\n' を使う。

C

cout の代わりに printf 関数を使う。

参考文献

http://stackoverflow.com/questions/20621639/stdendl-crashes-windows-8-compiled-using-mingw