0

编辑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;
}

当我运行此代码时,它显示未在此范围内声明“引擎”(在 void 中)。

我在 int main 进行了测试,但它可以工作。问题是它只在 main 上有效,但在 void 上无效。

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

提前致谢。

4

1 回答 1

2

这是意料之中的。irrklang::ISoundEngine* engine在 function 中定义,main但不在playSound().

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

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

main这样称呼它

playSound(engine);
于 2015-10-12T13:25:16.117 回答