C++ FMOD API没有';t正确返回FMOD版本
我目前正试图在我的项目中嵌入C++ FMOD API没有';t正确返回FMOD版本,c++,api,fmod,C++,Api,Fmod,我目前正试图在我的项目中嵌入FMOD,我想获取并打印FMOD的版本。 我这样做: #include "fmodmanager.h" #include "fmod_errors.h" #include <string> using namespace FMOD; EventSystem *pEventSystem; Event *pEvent = NULL; System *pSystem; FMOD_RESULT result;
FMOD
,我想获取并打印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);
}
#包括“fmodmanager.h”
#包括“fmod_错误.h”
#包括
使用名称空间FMOD;
事件系统*pEventSystem;
事件*pEvent=NULL;
系统*pSystem;
FMOD_结果;
CFMOD经理gFMODMng;
CFMODManager*FMODManager()
{
返回&gFMODMng;
}
无效错误检查(FMOD_结果)
{
如果(结果!=FMOD\U正常)
{
WarnMsg(“FMod错误!(%d)%s\n”,结果,FMod_错误字符串(结果));
}
}
CFMODManager::CFMODManager()
{
}
CFMODManager::~CFMODManager()
{
}
//这将从FMOD开始
void CFMODManager::InitFMOD(void)
{
ERRCHECK(result=FMOD::EventSystem_Create(&pEventSystem));
ERRCHECK(result=pEventSystem->init(64,FMOD_init_NORMAL,0,FMOD_EVENT_init_NORMAL));
//打印版本
fmodVersion=pSystem->getVersion(&fmodVersion);
消息(“FMod已初始化(%d)\n”,fmodVersion);
}
但我得到的是:
FMod已初始化(36)
首先,由
getVersion()
返回的版本号是一个无符号整数,而不是返回版本,FMOD
返回36
因此,您应该在printf
中使用%u
类型说明符(而不是%d
)
此外,getVersion()
可以使用某些特定格式返回版本号,例如,它可以将版本主版本号和版本次版本号“打包”在同一个无符号整数中。例如,返回值“36”可能表示“版本3.6”吗?FMOD版本号存储为十六进制,因此易于在内存中读取,即0x00044421易于读取为4.44.21,因此您应该使用%x而不是%d来打印它
另外,从系统返回:::getVersion实际上是函数调用成功或失败的FMOD_结果错误代码,您不应该将其分配给您尝试获取的版本号
最后,您将获得FMOD_结果36(FMOD_ERR_INVALID_句柄),因为您正在使用的pSystem指针尚未初始化。您应该在EventSystem\u Create之后使用EventSystem::getSystemObject来获取有效的低级系统句柄。通常,getVersion会返回类似“00044421”的内容