Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ FMOD API没有';t正确返回FMOD版本_C++_Api_Fmod - Fatal编程技术网

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”的内容