irrklang 引擎未声明为无效

irrklang engine was not declared at void

编辑 2: 解决了!使用下面的代码,它成功了!

irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice();

只需将上面的代码放在代码的顶部即可。 (也许下一行包含或命名空间)


我正在使用 irrKlang 播放音频,但我遇到了问题:

#include <irrKlang.h>

void playSound() {
    engine->play2D("src/Click.wav");
}

int main() {
    irrklang::ISoundEngine* engine = irrklang::createIrrKlangDevice();
    playSound();

    engine->drop();
    return 0;
}

当我 运行 这段代码时,它显示 'engine' (无效的)没有在此范围内声明。

我在 int main 测试了这个,但它有效。问题是它只在 main 上有效,在 void 上无效。

我可以用什么来修复这个错误?或者这是一个错误?

提前致谢。

这是意料之中的。 irrklang::ISoundEngine* enginemain 函数中定义,但在 playSound() 中没有定义。

一个简单的解决方案是将引擎作为参数传递

void playSound(irrklang::ISoundEngine* engine) {
    engine->play2D("src/Click.wav");
}

main 中这样称呼它

playSound(engine);