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

SFML doesn't play any sounds, but no errors

我有一个使用 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 

我已经安装了带有 apt-get 的 SFML 作为一个包。当我 运行 ./sfml-app 它输出 "Hello World",但我听不到任何声音。我尝试过调高音量、重启电脑、戴上耳机等。当我双击播放声音文件时,它会发出哔哔声。

感谢您的帮助

没有声音的原因有很多,即使您的代码完全正确。
然而,它不是,因为 sf::Sound::play 异步 在另一个线程中播放声音(如 here 所述)但是你的应用程序完成得非常快,从而给另一个线程线程没有真正的机会播放指定声音缓冲区的大部分内容。

所以为了至少在理论上有机会听到任何东西,我建议插入一些指令来阻止主线程,比如

std::cin.get();

就在退出之前。