私はプログラミングの初心者で、単純なコンソール MP3 プレーヤーをプロジェクトとして作成しようとしています。そのためには、.mp3
ファイルを再生する方法が必要です。SDL Mixer はこの機能を提供しますが、libmpg123
システムにインストールする必要があります。
必要な依存関係「libmpg123」がインストールされているにもかかわらず、「Mix_Init()」の呼び出しは常に失敗します。FLAC、OGG、MOD、MIDI など、他のフォーマットへの依存関係はありません。
ラップトップで Ubuntu 18.04 を実行しており、SDL2 バージョン 2.0.9、SDL_Mixer 2.0.4 の両方をソースからビルドしています (ただし、apt
パッケージ マネージャーから入手可能なバージョンを試しました)。ソースからビルドしたものもlibmpg123
インストールしました(パッケージマネージャーから入手できるバージョンも試しました)。
コードを次の 2 つの方法でコンパイルしました。
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
アップデート:
どうやら、他の依存関係もインストールされています...
しかし、私はそれらを使用する方法がわかりません。