2

私はプログラミングの初心者で、単純なコンソール 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

アップデート:

どうやら、他の依存関係もインストールされています...

しかし、私はそれらを使用する方法がわかりません。

ここに画像の説明を入力

4

1 に答える 1