0

SDL および SDL_mixer ライブラリを使用していますが、コンパイル時に次のエラーが発生します。

....
game.cpp:(.text+0x88f): undefined reference to `Mix_OpenAudio'
Jukebox.o: In function `Jukebox::~Jukebox()':
Jukebox.cpp:(.text+0x17): undefined reference to `Mix_FreeChunk'
Jukebox.cpp:(.text+0x27): undefined reference to `Mix_FreeChunk'
Jukebox.cpp:(.text+0x37): undefined reference to `Mix_FreeChunk'
Jukebox.cpp:(.text+0x47): undefined reference to `Mix_FreeChunk'
....

SDL_mixer関数を使用する場合など、またはすべてのインスタンス。

私が作成した別のテスト プログラムでは問題なくコンパイルされるため、エラーが Makefile 内にあることはかなり確信しています。

私のメイクファイル

SDL= -lSDL -lSDL_mixer

OBJ=game.o Jukebox.o ...

all:    main

main:   $(OBJ)
        g++ $(SDL) $(OBJ) -o main

%.o:    %.cpp
        g++ $(SDL) -c $<

clean:
        rm -f *.o *~ main
        rm -f */*~

エラーはどこにありますか?

4

2 に答える 2

3

問題はあなたの議論の順序だと思います。

それ以外の

main:   $(OBJ)
        g++ $(SDL) $(OBJ) -o main

試す

main:   $(OBJ)
        g++ -o main $(OBJ) $(SDL) 

-o main の位置はそれほど重要ではありませんが、リンク ライブラリの順序は重要です。コンパイラは、ライブラリがコマンド ラインに表示される順序でシンボルを解決します。

于 2013-05-01T03:53:06.333 に答える