標準エラーに出力すると勝手に終了してしまう
Windows (XP) 環境で標準エラーに出力するとアプリケーションが勝手に終了してしまいました。
ただし終了するのはコンソールを非表示にしたときに標準エラーに出力する場合のみで、コンソールが見えている状態や標準出力への出力なら問題がないようです。
stderr.d のソースコード(ウィンドウを出してループするだけ)
ウィンドウを出しておくのにSDLを使用しています。
// Using dmd v1.043, Tango 0.99.8, Windows XP Home SP3 import SDL; import tango.io.Stdout; void main() { SDL_Init(SDL_INIT_VIDEO); SDL_SetVideoMode(640, 480, 8, SDL_SWSURFACE); SDL_Event event; bool done = false; while (!done) { while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: done = true; break; default: } } Stderr("stderr").newline; SDL_Delay(33); } SDL_Quit(); }
$ dmd stderr.d -I../SDL ../SDL/*.lib -L/subsystem:windows:4.0
端末から実行すると"stderr"という文字列が沢山流れますが、ダブルクリックで実行するとすぐに終了してしまいます。
また"-L/subsystem:windows:4.0"を取ってやれば、(実行時にコンソールが表示されますが)終了しなくなります。
原因はよく分かってないので調査してみます(もしくは諦めます;-P)。