SDL_Mixer 2.0.4 "MP3 support not available" 即使安装了 libmpg123
SDL_Mixer 2.0.4 "MP3 support not available" even though libmpg123 is installed
我是编程初学者,正在尝试制作一个简单的控制台 MP3 播放器作为一个项目。为此,我需要一种播放 .mp3
文件的方法。 SDL Mixer 提供此功能,但需要在系统上安装 libmpg123
。
调用 'Mix_Init()' 总是失败,即使我安装了所需的依赖项 'libmpg123'。我没有其他格式的依赖项,即 FLAC、OGG、MOD 和 MIDI(如果重要的话)。
我是 运行 Ubuntu 18.04 在我的笔记本电脑上,我有 SDL2 版本 2.0.9,SDL_Mixer 2.0.4 都是从源代码构建的(尽管我已经尝试了可用的版本通过 apt
包管理器)。我还安装了 libmpg123
,我也是从源代码构建的(同样,我也尝试了通过包管理器提供的版本)。
我用两种方式编译了代码:
g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer
和
g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer -lmpg123
我不知道哪个是正确的,但都没有解决问题。
#include<SDL2/SDL.h>
#include<SDL2/SDL_mixer.h>
#include<iostream>
int main(int argc, char** argv)
{
if(SDL_Init(SDL_INIT_AUDIO))
std::cerr << "SDL_Init() Error: " << SDL_GetError() << std::endl;
else {
int result {0};
if(!((result = Mix_Init(MIX_INIT_MP3)) && MIX_INIT_MP3)){
std::cerr << Mix_GetError() << std::endl;
std::cerr << "Mix_Init() returns " << result << std::endl;
}
else {
std::cout << "Success!" << std::endl;
}
}
return 0;
}
这是我的 /usr/local/lib
目录的内容:
cmake libmpg123.so.0.44.8 libSDL2-2.0.so.0 libSDL2main.la libSDL2_mixer.so pkgconfig
libglfw3.a libout123.la libSDL2-2.0.so.0.9.0 libSDL2_mixer-2.0.so.0 libSDL2.so python2.7
libmpg123.la libout123.so libSDL2.a libSDL2_mixer-2.0.so.0.2.2 libSDL2_test.a python3.6
libmpg123.so libout123.so.0 libSDL2.la libSDL2_mixer.a libSDL2_test.la python3.7
libmpg123.so.0 libout123.so.0.2.2 libSDL2main.a libSDL2_mixer.la mpg123
我期望输出:
Success!
相反,我得到:
MP3 support not available
Mix_Init() returns 0
更新:
显然,我还安装了其他依赖项...
但我不知道如何使用它们。
构建时需要安装 mpg123 的开发文件 SDL2_mixer。例如。对于 debian/ubuntu,您需要 libmpg123-dev
(对于其他格式也是如此),而 SDL_mixer 的 ./configure
应该输出类似
的内容
checking mpg123.h usability... yes
checking mpg123.h presence... yes
checking for mpg123.h... yes
checking for mpg123_replace_reader_handle in -lmpg123... yes
-- dynamic libmpg123 -> libmpg123.so.0
然后make && make install。或者使用发行版提供的 libsdl2-mixer-dev
,如果它符合您的要求。
我是编程初学者,正在尝试制作一个简单的控制台 MP3 播放器作为一个项目。为此,我需要一种播放 .mp3
文件的方法。 SDL Mixer 提供此功能,但需要在系统上安装 libmpg123
。
调用 'Mix_Init()' 总是失败,即使我安装了所需的依赖项 'libmpg123'。我没有其他格式的依赖项,即 FLAC、OGG、MOD 和 MIDI(如果重要的话)。
我是 运行 Ubuntu 18.04 在我的笔记本电脑上,我有 SDL2 版本 2.0.9,SDL_Mixer 2.0.4 都是从源代码构建的(尽管我已经尝试了可用的版本通过 apt
包管理器)。我还安装了 libmpg123
,我也是从源代码构建的(同样,我也尝试了通过包管理器提供的版本)。
我用两种方式编译了代码:
g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer
和
g++ Mix_Init.cpp -lSDL2 -lSDL2_mixer -lmpg123
我不知道哪个是正确的,但都没有解决问题。
#include<SDL2/SDL.h>
#include<SDL2/SDL_mixer.h>
#include<iostream>
int main(int argc, char** argv)
{
if(SDL_Init(SDL_INIT_AUDIO))
std::cerr << "SDL_Init() Error: " << SDL_GetError() << std::endl;
else {
int result {0};
if(!((result = Mix_Init(MIX_INIT_MP3)) && MIX_INIT_MP3)){
std::cerr << Mix_GetError() << std::endl;
std::cerr << "Mix_Init() returns " << result << std::endl;
}
else {
std::cout << "Success!" << std::endl;
}
}
return 0;
}
这是我的 /usr/local/lib
目录的内容:
cmake libmpg123.so.0.44.8 libSDL2-2.0.so.0 libSDL2main.la libSDL2_mixer.so pkgconfig
libglfw3.a libout123.la libSDL2-2.0.so.0.9.0 libSDL2_mixer-2.0.so.0 libSDL2.so python2.7
libmpg123.la libout123.so libSDL2.a libSDL2_mixer-2.0.so.0.2.2 libSDL2_test.a python3.6
libmpg123.so libout123.so.0 libSDL2.la libSDL2_mixer.a libSDL2_test.la python3.7
libmpg123.so.0 libout123.so.0.2.2 libSDL2main.a libSDL2_mixer.la mpg123
我期望输出:
Success!
相反,我得到:
MP3 support not available
Mix_Init() returns 0
更新:
显然,我还安装了其他依赖项...
但我不知道如何使用它们。
构建时需要安装 mpg123 的开发文件 SDL2_mixer。例如。对于 debian/ubuntu,您需要 libmpg123-dev
(对于其他格式也是如此),而 SDL_mixer 的 ./configure
应该输出类似
checking mpg123.h usability... yes
checking mpg123.h presence... yes
checking for mpg123.h... yes
checking for mpg123_replace_reader_handle in -lmpg123... yes
-- dynamic libmpg123 -> libmpg123.so.0
然后make && make install。或者使用发行版提供的 libsdl2-mixer-dev
,如果它符合您的要求。