2013-10-05 6 views
0

현재 내 프로젝트에 FMOD을 삽입하려고하고 있는데 FMOD 버전을 가져와 인쇄하고 싶습니다. 나는 일이 :FMOD API가 적절하게 FMOD 버전을 반환하지 않습니다.

#include "fmodmanager.h" 
#include "fmod_errors.h" 
#include <string> 

using namespace FMOD; 
EventSystem  *pEventSystem; 
Event   *pEvent = NULL; 
System   *pSystem; 
FMOD_RESULT  result; 
CFMODManager gFMODMng; 

CFMODManager* FMODManager() 
{ 
    return &gFMODMng; 
} 

void ERRCHECK(FMOD_RESULT result) 
{ 
    if (result != FMOD_OK) 
    { 
     WarnMsg("FMod error! (%d) %s\n", result, FMOD_ErrorString(result)); 
    } 
} 

CFMODManager::CFMODManager() 
{ 
} 

CFMODManager::~CFMODManager() 
{ 
} 

// This starts FMOD 
void CFMODManager::InitFMOD(void) 
{ 
    ERRCHECK(result = FMOD::EventSystem_Create(&pEventSystem)); 
    ERRCHECK(result = pEventSystem->init(64, FMOD_INIT_NORMAL, 0, FMOD_EVENT_INIT_NORMAL)); 

    // Print the version 
    fmodVersion = pSystem->getVersion(&fmodVersion); 
    Msg("FMod initialized (%d)\n", fmodVersion); 
} 

하지만 내가 얻을 것은 :

FMod에이

(36)

대신의 버전을 반환 FMOD 수익을 초기화

답변

0

FMOD 버전 번호는 16 진수로 저장되므로 쉽게 읽을 수 있습니다. 즉, 0x00044421은 쉽게 4.44.21로 읽히므로 % d 대신 % x을 사용하여 인쇄해야합니다.

또한 System ::: getVersion에서 반환하는 것은 실제로 함수 호출의 성공 또는 실패에 대한 FMOD_RESULT 오류 코드이므로 가져 오려는 버전 번호에 할당하면 안됩니다.

마지막으로, 사용중인 pSystem 포인터가 초기화되지 않았기 때문에 FMOD_RESULT 36 (FMOD_ERR_INVALID_HANDLE)이 나타납니다. EventSystem :: CreateSystemObject를 EventSystem_Create 다음에 사용하여 유효한 저수준 시스템 핸들을 가져와야합니다.

0

먼저 getVersion()에 의해 반환 된 버전 번호는입니다..
printf (%d이 아님)에 %u 형식 지정자를 사용해야합니다.

또한 getVersion()특정 형식 인을 사용하여 버전 번호를 반환 할 수 있습니다. 동일한 메이저 정수에 버전 메이저 번호와 버전 마이너 번호를 "팩"할 수 있습니다. 예를 들어, 반환 값 "36"이 "버전 3.6"을 의미 할 수 있습니까?

+0

일반적으로 getVersion은 "00044421"http://pastebin.com/Zm3KDZkq와 같은 것을 반환합니다. – pushrq