C++ SDL Mix_LoadMUS未加载。mp3

C++ SDL Mix_LoadMUS未加载。mp3,c++,sdl,mp3,sdl-mixer,C++,Sdl,Mp3,Sdl Mixer,显然,我一直在尝试使用SDL_混音器加载.mp3。但是,与libsdl wiki相反,这不起作用: 我希望它能工作,但在加载和播放文件时,我的控制台应用程序中突然出现以下错误: Mix_LoadMUS: Unrecognized audio format Mix_PlayMusic: music parameter was NULL 就我而言,我一直试图通过以下方式加载test.mp3: Mix_Music * m_mainMusic; m_mainMusic = Mix_LoadMUS("

显然,我一直在尝试使用SDL_混音器加载.mp3。但是,与libsdl wiki相反,这不起作用:

我希望它能工作,但在加载和播放文件时,我的控制台应用程序中突然出现以下错误:

Mix_LoadMUS: Unrecognized audio format
Mix_PlayMusic: music parameter was NULL
就我而言,我一直试图通过以下方式加载test.mp3:

Mix_Music * m_mainMusic;

m_mainMusic = Mix_LoadMUS("test.mp3");
if (m_mainMusic != nullptr)
    printf("Loaded the file\n");
else
    printf("Mix_LoadMUS: %s\n", Mix_GetError());

if (Mix_PlayMusic(m_mainMusic, -1) == -1) 
    printf("Mix_PlayMusic: %s\n", Mix_GetError());

显然,我已经初始化了SDL子系统。

在上述解释的帮助下,我试图重现您的问题,唯一导致类似问题的是缺少运行库。确保所有必需的库在运行时可用(将它们复制到可执行文件的文件夹中,或设置环境变量或使用静态链接)。随SDL_mixer分发的运行时库包括以下库:libmpg123-0、libmodplug-1、libFLAC-8、libogg-0、libopus-0、libopusfile-0、libvorbis-0、,libvorbisfile-3和SDL2_混频器


这些可以在这里获得:

请发布MVCE和mp3文件。您是否至少使用
Mix\u Init\OGG
位调用了
Mix\u Init
?它的返回值是否与您传递给它的位掩码相同?对于我在macOS上的案例,我需要安装
libmpg123
(播放MP3),并使其
.dylib
与可执行二进制文件位于同一目录级别。WIndows也是如此,我用macOS的交叉编译测试了它。同样,您需要调用带有标志的
Mix_Init()
,以初始化您要使用的文件格式的
SDL_mixer
,并检查其返回结果,这样您就可以更精确地调试它出了什么问题。