首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FMOD没有正确返回FMOD版本

FMOD没有正确返回FMOD版本
EN

Stack Overflow用户
提问于 2013-10-05 22:02:06
回答 2查看 434关注 0票数 0

我目前正在尝试将FMOD嵌入到我的项目中,我想获取并打印FMOD的版本。我做了这个:

代码语言:javascript
复制
#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没有返回版本,而是返回36

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-07 10:51:56

FMOD版本号存储为十六进制,因此在内存中很容易读取,即0x00044421很容易读取为4.44.21,因此您应该使用%x而不是%d打印它。

另外,从System:getVersion返回的实际上是一个FMOD_RESULT错误代码,用于函数调用的成功或失败,您不应该将它分配给试图获取的版本号。

最后,您将得到FMOD_RESULT 36 (FMOD_ERR_INVALID_HANDLE),因为您使用的pSystem指针尚未初始化。您应该在EventSystem_Create之后使用EventSystem::getSystemObject来获取有效的低级系统句柄。

票数 0
EN

Stack Overflow用户

发布于 2013-10-05 22:26:19

首先,getVersion()返回的版本号是一个unsigned int

因此,您应该在%u (而不是%d)中使用printf类型说明符。

此外,getVersion()可以使用某种特定的格式返回版本号,例如,它可以将版本号和版本号用相同的无符号整数“打包”。例如,返回值"36“是否可能意味着”版本3.6"?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19203190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档