C++ windows上的SDL 2不能与音频设备一起正常工作

C++ windows上的SDL 2不能与音频设备一起正常工作,c++,sdl-2,C++,Sdl 2,似乎我在为mingw编译的SDL库和visualstudio库之间发现了一个bug 我正在尝试用以下代码打开音频设备: #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_AudioS

似乎我在为mingw编译的SDL库和visualstudio库之间发现了一个bug

我正在尝试用以下代码打开音频设备:

#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;
}
工作正常。有人能告诉我原因吗?这是在同一台机器上完成的。这可能是由不同版本的SDL库引起的吗?

有两个问题:

  • 我已经下载了SDL2.dll的新版本

  • 这导致OpenAudio函数失败,出现
    XAudio2Create()
    错误

  • 我按照瓦格纳·帕特里奥塔的建议解决了这个问题。 我补充说

     putenv("SDL_AUDIODRIVER=DirectSound");
    

    尝试添加环境变量“SDL_AUDIODRIVER”=“DirectSound”,并告诉我它是否有效
     putenv("SDL_AUDIODRIVER=DirectSound");