SFML 不播放任何声音,但没有错误

SFML doesn't play any sounds, but no errors

本文关键字:有错误 声音 播放 任何 SFML      更新时间:2023-10-16

我使用SFML播放.WAV声音文件的简单C 程序。看起来这样:

#include <SFML/Audio.hpp>
#include <iostream>

int main()
{
    sf::SoundBuffer buffer;
    if (!buffer.loadFromFile("beep-01a.wav"))
        return -1;
    sf::Sound sound;
    sound.setBuffer(buffer);
    sound.play();
    std::cout << "Hello World" << std::endl;  
    return 0;  
}

我在Ubuntu 16.04 LTS上运行它,并用

对其进行编译
$ g++ -c main.cpp
$ g++ main.o -o sfml-app -lsfml-audio
$ ./sfml-app 

我已经安装了SFML,以APT-GEG作为包装。当我运行./sfml-app时,它会输出" Hello World",但我什么也听不到。我尝试将音量调高,重新启动计算机,戴耳机等。

感谢您的帮助

即使您的代码完全正确,也可能有很多原因。
但是,不是,因为SF :: Sound :: Play 异步 在另一个线程中播放声音(如下所述),但是您的应用程序很快完成,因此给另一个线程没有真正的机会播放大部分指定的声音缓冲区。

因此,为了至少有理论上听到任何事情的机会,我建议插入一些指令以阻止主线程,例如

std::cin.get();

退出之前。