gpt4 book ai didi

c++ - FMOD - 未处理的异常,没有可用的源代码

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:22 26 4
gpt4 key购买 nike

我试图让我的音轨使用 FMOD 播放,但我一直收到未处理的异常,然后它说没有可用的源代码,并向我显示反汇编代码。

main.cpp
bool AudioProject::initAudio()
{
// Audio code
fmSound = new Sound();
fmSound->initialise();
fmSound->load("Music/Rocky_Theme_Tune.mp3");
fmSound->play();
return true;
}

我在它停止的地方放置了断点,这是在初始化函数中。它甚至进入初始化函数,然后随机中断。我想我有 fmod 的每个包含文件,因为我去年使用它没问题。

我也会发布我的 sound.h/.cpp 文件。

.h

#include "stdafx.h"
#pragma once
#include "fmod.hpp"
#include "fmod.h"


class Sound
{
private:
bool on; //is sound on?
bool possible; //is it possible to play sound?
char * currentSound; //currently played sound
//FMOD-specific stuff
FMOD_RESULT result;
FMOD_SYSTEM * fmodsystem;
FMOD_SOUND * sound;
FMOD_CHANNEL * channel;

public:
Sound();
~Sound();
void initialise (void);
void setVolume (float v);
void load (const char * filename);
void unload (void);
void play (bool pause = false);
bool getSound (void);
void setPause (bool pause);
void setSound (bool sound);
void toggleSound (void);
void togglePause (void);

};

.cpp

#include "stdafx.h"
#include "Sound.h"
#include "fmod.h"
#include "fmod.hpp"

Sound::Sound()
{
on = true; //is sound on?
possible = true; //is it possible to play sound?
currentSound=""; //currently played sound
sound=0;

}

Sound::~Sound()
{

}

//initialises sound
void Sound::initialise (void)
{

//create the sound system. If fails, sound is set to impossible
result = FMOD_System_Create(&fmodsystem);
if (result != FMOD_OK)
possible = false;

//if initialise the sound system. If fails, sound is set to impossible
if (possible)
result = FMOD_System_Init(fmodsystem,2, FMOD_INIT_NORMAL, 0);

if (result != FMOD_OK)
possible = false;

//sets initial sound volume (mute)
if (possible)
FMOD_Channel_SetVolume(channel,1.0f);
}

//sets the actual playing sound's volume
void Sound::setVolume (float v)
{
if (possible && on && v >= 0.0f && v <= 1.0f)
{
FMOD_Channel_SetVolume(channel,v);
}
}

//loads a soundfile
void Sound::load (const char * filename)
{
currentSound = (char *)filename;
if (possible && on)
{
result = FMOD_Sound_Release(sound);
result = FMOD_System_CreateStream(fmodsystem,currentSound, FMOD_SOFTWARE, 0, &sound);
if (result != FMOD_OK)
possible = false;
}
}

//frees the sound object
void Sound::unload (void)
{
if (possible)
{
result = FMOD_Sound_Release(sound);
}
}

//plays a sound (no argument to leave pause as dafault)
void Sound::play (bool pause)
{
if (possible && on)
{
result = FMOD_System_PlaySound(fmodsystem,FMOD_CHANNEL_FREE, sound, pause, &channel);
FMOD_Channel_SetMode(channel,FMOD_LOOP_NORMAL);
}
}

//toggles sound on and off
void Sound::toggleSound (void)
{
on = !on;
if (on == true)
{
load(currentSound);
play();
}
if (on == false)
{
unload();
}
}

//pause or unpause the sound
void Sound::setPause (bool pause)
{
FMOD_Channel_SetPaused (channel, pause);
}

//turn sound on or off
void Sound::setSound (bool s)
{
on = s;
}

//toggle pause on and off
void Sound::togglePause (void)
{
FMOD_BOOL p;
FMOD_Channel_GetPaused(channel,&p);
FMOD_Channel_SetPaused (channel,!p);
}

//tells whether the sound is on or off
bool Sound::getSound (void)
{
return on;
}

在这里碰壁,有人有什么想法吗?

最佳答案

您正在 initialise 中调用 FMOD_Channel_SetVolume(channel,1.0f),但是 channel 变量尚未初始化,它由 Sound::play

中的 FMOD_System_PlaySound(fmodsystem,FMOD_CHANNEL_FREE, sound, pause, &channel); 初始化

关于c++ - FMOD - 未处理的异常,没有可用的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7490672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com