2014-09-08 2 views
0

저는 게임에서 사운드를 재생하기 위해 우분투에서 FMOD를 사용하고 있습니다. Fmod constans (FMOD_HARDWARE)을 찾을 수 없습니다.

나는 다음

#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가 발견되지 않는 것입니다.

누구나 어디에서 알 수 있습니까?

편집 : 또 다른 한가지는 pragma 주석이 pragma를 무시한다는 경고를 던집니다. 어쩌면 문제가 프라그마와 관련이 있을까요? Pragma를 어떻게 수정합니까?

+0

라이브러리를 연결하는 #pragma comment는 Microsoft Visual C++ 확장 프로그램입니다. 또한, 당신은'.lib' 파일 (보통 윈도우 라이브러리)과 링크하려고합니다. POSIX 시스템 (예 : Ubuntu) 정적 라이브러리 파일은'.a'로 끝납니다. –

+0

Eclipse를 사용하고 있으므로 환경 설정으로 이동하여 경로 및 심볼 메뉴의 라이브러리에 배치하면됩니다. – Elseine

답변

0

필자는 FMOD_HARDWARE가 이전 FMOD Ex API에 있다고 생각합니다. FMOD 5를 사용하고 있습니까? System :: createSound에 대한 호출에서 FMOD_DEFAULT 또는 FMOD_CREATESAMPLE을 사용합니다 (후자는 전체 사운드를로드하고 메모리에서 압축을 풀어 재생 속도를 높이기 위해). 하드웨어를 잘 사용하는 것 같습니다. playSound 호출을 시도해보십시오.

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