std:endl を使うと、アプリケーションが動作を停止する
問題
- std:endl を使ったプログラムを実行すると、APPCRASH が発生する。
- デバッガー上で実行すると、SIGILL (Illegal instruction) が発生している。
環境
- MinGW 4.8.2
- Qt 5.3.2
原因
実行時リンクに 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