Связывание ошибок с библиотекой SDL_mixer

Я работаю с библиотеками 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, потому что он прекрасно компилируется в другой тестовой программе, которую я сделал.

Мой 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 */*~

Где ошибка?

0

Решение

Я думаю, что проблема в порядке ваших аргументов.

Вместо

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

пытаться

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

Хотя позиция -o main не очень важна, порядок библиотек ссылок таков. Компиляторы разрешают символы в том порядке, в котором библиотеки отображаются в командной строке.

3

Другие решения

Кажется, что ваш компоновщик не может найти, где расположены библиотеки. Определите, где они были установлены, и передайте этот путь компоновщику с помощью директивы -L.

Поместите что-то вроде этого:
SDL = -L / путь / к / установленному / SDL / библиотеки -lSDL -lSDL_mixer

Обратите внимание, что в: g ++ $ (SDL) -c $< переменная $ (SDL) не имеет значения, если вы не связываетесь с вашей программой, а просто генерируете объекты.

1

По вопросам рекламы [email protected]