Неполный тип
# включает « SDL_mixer.h », и все должно быть в порядке 1 , 2 .
Компилятор не способен компилировать связанный с SDL код без включения SDL, чтобы сказать ему, на что ссылаются эти ссылки SDL (Mix_Musi, Mix_LoadMUS и т. Д.). См. Руководство по SDL_Mixer на kekkai.org/roger3. У него есть полный пример.
1 SDL Включить файл
2 Mix_LOadMUS
3 Учебник по SDL с полным примером
-
Обновление: использование массива музыкальных предметов
Это пример того, как получить доступ к определенному указателю на Mix _ Music из кода потока или в любом месте, лексически отделенном от выделения переменной указателя. Реальная реализация может захотеть использовать динамическое выделение массива и должна добавить обработку ошибок для файла не найден или не удалось загрузить и т. Д.
MEnt.h Общий файл iclude для модулей инициализации и потоков:
#include <cstdlib>
#include "SDL.h"
#include "SDL_mixer.h"
enum { MAXENTRIES=1024 };
struct MEnt{
Mix_Music * music;
char *filename;
};
extern MEnt Marray[MAXENTRIES];
extern int Mselected;
Инициализация программы:
#include "MEnt.h"
// Alocate space for array of music items
MEnt Marray[MAXENTRIES];
int Mselected=-1;
В коде потока включите:
#include "MEnt.h"
// Return a pointer for the selected music item:
// Allocate new Mix_Music* if not already done,
// otherwise return the already allocated pointer.
Mix_Music *getSelected(){
Mix_Music *music;
if(Mselected >= 0 && Mselected < MAXENTRIES){
struct MEnt ¤t=Marray[Mselected];
if(!(music=current.music) &&
(current.filename!=NULL))
music=current.music=
Mix_LoadMUS(current.filename);
}
return music;
}