编辑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测试这个,但它有效。问题是它只在主要的时候起作用,而在无效的时候不起作用。
有什么可以用来修正这个错误的吗?还是一只虫子?
提前谢谢。
发布于 2015-10-12 13:25:16
这是意料之中的。irrklang::ISoundEngine* engine是用main函数定义的,而不是在playSound()中定义的。
一个简单的解决方案是将引擎作为一个参数传递。
void playSound(irrklang::ISoundEngine* engine) {
engine->play2D("src/Click.wav");
}在main中这样称呼它
playSound(engine);https://stackoverflow.com/questions/33082297
复制相似问题