Fmod константы (FMOD_HARDWARE) не найдены

0

Я использую FMOD в Ubuntu для воспроизведения звука в своей игре.

У меня есть следующий

#include "SoundEngine.h"
bool SoundEngine::initSystem()
{
  System_Create(&system);// create an instance of the game engine
system->init(32, FMOD_INIT_NORMAL, 0);// initialise the game engine with 32 channels


//load sounds
system->createSound("Media/NoMoreMagic.ogg", FMOD_HARDWARE, 0, &sound1);
sound1->setMode(FMOD_LOOP_OFF);    /* drumloop.wav has embedded loop points which automatically makes looping turn on, */

/* so turn it off here.  We could have also just put FMOD_LOOP_OFF in the above CreateSound call. */
system->playSound(FMOD_CHANNEL_FREE, sound1, false, 0);
return true;

}

И SoundEngine.h:

#ifndef SOUNDENGINE_H_
#define SOUNDENGINE_H_

#include "FMOD/inc/fmod.hpp" //fmod c++ header
#pragma comment( lib, "fmodex_vc.lib" ) // fmod library

using namespace FMOD;
class SoundEngine{
public:
    bool initSystem(void);
private:
//FMod Stuff
    System     *system; //handle to FMOD engine
    Sound      *sound1, *sound2; //sound that will be loaded and played
};  



#endif /* SOUNDENGINE_H_ */

Проблема в том, что FMOD_HARDWARE или FMOD_CHANNEL_FREE не найден.

Кто-нибудь знает, где они?

EDIT: Другое дело, что в комментарии прагмы выдается предупреждение, в котором игнорируется прагма. Может быть, проблема связана с прагмой? Как я могу исправить прагму?

  • 0
    #pragma comment для ссылки на библиотеку является расширением Microsoft Visual C ++. Кроме того, вы пытаетесь связать файл .lib , который обычно является библиотекой Windows. В системах POSIX (таких как Ubuntu) файлы статических библиотек заканчиваются на .a .
  • 0
    Я использую Eclipse, поэтому мне нужно всего лишь перейти в «Настройки» и поместить его в «Библиотеки» в меню «Путь и символы», верно?
Теги:
fmod

1 ответ

0

Я считаю, что FMOD_HARDWARE - это более старый FMOD Ex API. Вы используете FMOD 5? В моих вызовах System :: createSound я использую FMOD_DEFAULT или FMOD_CREATESAMPLE (последний загрузит весь звук и распакует его в памяти, чтобы ускорить воспроизведение), который, похоже, хорошо использует оборудование. Для вашего вызова playSound попробуйте

FMOD::Channel *channel;
system->playSound(sound1, NULL, false, &channel);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню