SDLはデフォルト設定だと、コンソール出力がファイル出力にリダイレクトされるようになってる。
これをなんとかして黙らせたい。
調べた所、SDLがリダイレクトを使わないようにオプション設定を付与してビルドしなければいけないらしい。
configure走らせる時に --disable-stdio-redirectを引数に与えれば良い様子。カンタン。
ラクにできそうなので早速MinGWをターゲットに試します。(Cygwinだと現行のgcc4.xでOpenGL使うのに一手間いるので見送り
さてまずSDLのビルド。configureするとMinGWは途中で止まった。
なんでやー、と海外サイトをフラフラしてると、"SDLをビルドするならgccをver.3.xに変えなきゃコケる"とのこと。
参考:(http://www.noquarterarcade.com/using-cy ... evelopment)
Cygwinでgccのバージョンを落としてSDLをビルド、事がすんだらバージョンを元に戻す、という感じ。
参考通りにCygwinでビルドしてみると、すんなりできました。
CygwinでビルドしたんだからMinGWからそのライブラリ使えるかも?と思いやってみた所、
あっさり普通に動きました。
そしてSDL_mixerを使って音をならしてみました。実際のコードはこんな感じ
#include "Sound.h"
#include
#define NUM_SOUNDS 2
struct sample {
Uint8 *data;
Uint32 dpos;
Uint32 dlen;
} sounds[NUM_SOUNDS];
void mixaudio(void *unused, Uint8 *stream, int len)
{
int i;
Uint32 amount;
for ( i=0; i len ) {
amount = len;
}
SDL_MixAudio(stream, &sounds[i].data[sounds[i].dpos], amount, SDL_MIX_MAXVOLUME);
sounds[i].dpos += amount;
}
}
int main(int argc, char *argv[])
{
//SDL_mixerの初期化
if(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY,MIX_DEFAULT_FORMAT,2,1024) g++ sound.cpp -lmingw32 -lSDLmain -lSDL -lSDL_mixer
これでhoge.wavの再生ができました。
MinGWだとgccのバージョン戻すの面倒くさいので、同じ問題にあたったらCygwinを経由するのが
ラクかもしれないなと思いました。