2012-05-05 4 views
4

SDL/SDL_Mixerを使用してwavファイルを再生するC++アプリケーションで作業しています。私はあまり問題なくMac上でアプリケーションを開発してきました。しかし、私はLinux上で動作させるためにこのアプリケーションが必要なので、私はVirtualBoxをWindows 7のマシンにUbuntu 12.04 LTSと入れました。私が実際にシステムを初期化しようとするまで、コンパイルは正常に動作します。次に、SDL_Mixerに「利用可能なオーディオデバイスがありません」というエラーが表示されます。ここでSDL_Mixerを初期化すると「利用可能なオーディオデバイスがありません」というエラーメッセージが表示されます

は、エラーがスローされたコードは次のとおりです。

using namespace std; 

void simple_sound_init() { 
    if (SDL_Init(SDL_INIT_AUDIO) == -1) { 
     fprintf(stderr, "init SDL error: %s\n", SDL_GetError()); 
     SDL_Quit(); 
     exit(1); 
    } 

    if (Mix_OpenAudio(SOUNDSAMPLERATE, MIX_DEFAULT_FORMAT, 1, 1024) != 0) { 
     fprintf(stderr, "initialize audio error: %s\n", Mix_GetError()); 
     Mix_CloseAudio(); 
     SDL_Quit(); 
     exit(1); 
    } 

    Mix_ChannelFinished(simple_sound_channel_finised); 
} 

私が得る正確なエラーがある:

initialize audio error: No available audio device 

P/S:私は解決策をオンラインで広範囲に検索しましたし、私はしましたライブラリのインストールをチェックしようとしました。しかし、何かを見逃している可能性があるので、基本的なライブラリの提案は大歓迎です。私はそれらをセットアップしたことを確認します。

+0

多分あなたはバーチャルボックスを正しく設定していませんでしたか? –

+0

どうやったら間違って設定したのですか?サウンドは他のすべてのプログラムでうまく動作します(もちろんこれ以外)。ゲスト追加機能がインストールされています。 –

答えて

2

私はまったく同じ状況で同じ問題を抱えていますが、ubuntu 14.04LTS(バーチャルボックス、ホストとしてはW7)です。しかし、問題はVMの設定ではありません(サウンドは他のubuntuアプリケーションでうまく動作します)。書き込みライアンC.ゴードンへ http://forums.libsdl.org/viewtopic.php?t=7609&sid=40fdb9756b8e22e1b8253cda3338845f

感謝:あなたがあなた自身のSDLを構築した場合

」、あなたはおそらく(のPulseAudioのための開発用ヘッダ を持っていなかった私はそこに答えを見つけ

(つまり、SDL_Init(SDL_INIT_AUDIO) は成功しますが、開こうとするとデバイスが見つかりません)。 "apt -get libasound2-dev libpulse-devをインストールし、SDLを再構築してください... configu再 スクリプトは、PulseAudioとALSAのサポートを含むように新しいヘッダを見つけます。 "

私はpulseAudioやALSAのヘッダーがなくても、ソースからSDLとSDLミキサーを効果的に構築しました。 libsをインストールしてSDLとSDL_mixer(v1.2)の両方を再コンパイルすると、サウンドは正常に動作します。

問題が残っている場合は、彼はまた、別の解決策を語る:

「あなた自身のSDLを構築していない場合は、多分あなたは 別のオーディオパスを使用するように強制することができます: SDL_AUDIODRIVERを=パルス./mytestprogram または SDL_AUDIODRIVER = ALSA ./mytestprogram」

私は最初の解決策として、私の場合は良いものだったことをしようとしませんでした。