2017-05-25 20 views
1

mingwとvisual studio用にコンパイルされたSDLのライブラリ間にバグがありました。WindowsのSDL 2がオーディオデバイスで正しく動作しない

私は次のコードでオーディオ機器オープンしようとしている:私は

同じコードは、コマンドでMINGW32を経由してコンパイル「エラー間違ったフォーマット」を取得

#include <SDL.h> 
#include <stdio.h> 
int main(int argc, char **argv) 
{ 
    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_TIMER)) { 
     exit(1); 
    } 

    SDL_AudioSpec wanted_spec, spec; 

    wanted_spec.channels = 2; 
    wanted_spec.freq = 44100; 
    wanted_spec.format = AUDIO_S16SYS; 
    wanted_spec.silence = 0; 
    wanted_spec.samples = 2048; 
    wanted_spec.callback = 0; 
    //wanted_spec.userdata = opaque; 
    while (SDL_OpenAudio(&wanted_spec, &spec) < 0) { 
     printf("error cant open audio"); 
    } 
    if (spec.format != AUDIO_S16SYS) { 
     printf("error wrong format"); 
     return -1; 
    } 

    return 0; 
} 

MSVSを経由して、これをコンパイルします:

g++ main.c -I/mingw32/include/SDL2 -L/mingw32/lib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2 

が正しく動作します。誰かが私にこの理由を指摘できますか?これは同じマシン上で行われます。これは異なるバージョンのSDLライブラリによって引き起こされる可能性がありますか?

+0

は、環境変数「SDL_AUDIODRIVER」=「DirectSoundに」を追加し、それが動作するかどうか私に教えてみてください追加しました –

答えて

2

2つの問題がありました:

  1. は、私がSDL2.dllの新しいバージョンをダウンロードしました。

  2. これにより、OpenAudio関数がエラーXAudio2Create()で失敗する原因となりました。

私はこれをWagner Patriotaが提案したことによって解決しました。 私は

putenv("SDL_AUDIODRIVER=DirectSound"); 
関連する問題