听起来没有在我的代码上播放

Sounds not playing on my code

我正在学习 SFML 库 2.2 版,但无法播放声音。我编译 运行 ubuntu 14.04 上的程序。这是我的程序

#include "SFML/Audio.hpp"
#include <stdio.h>
#include <iostream>

using namespace std;
using namespace sf;

SoundBuffer buffer;
Sound audio;    

int main(int argc, char* argv[])    {

    if(buffer.loadFromFile(argv[1]))
        cout << "Sounds Loaded" << endl;
    audio.setBuffer(buffer);
    audio.setVolume(100);
    audio.play();
    cout << "Yay!" << endl;
    return 0;

}

这是我的编译代码:

g++ testaudio.cpp -I <My Directory>/SFML-2.2/include/ -L <My Directory>/SFML-2.2/lib/ -lsfml-audio -lsfml-system -o testaudio

我的编译没有错误,但是当我运行程序时,声音不出来。我检查了我的音量,但没有任何变化。

我怀疑audio.play()是异步的。所以你的程序在声音开始播放后立即退出。

只需在程序退出前执行此操作即可:

audio.play();
cout << "Yay!" << endl;

sleep(9999); // sleep until CTRL+C is pressed
return 0;

SFML sound tutorials 表示声音和音乐在单独的线程中播放。可能发生的情况是您的程序运行,开始在单独的线程上播放声音,但主线程保持 运行 并到达 main 函数的末尾并退出,从而终止您的程序。简而言之:您的程序退出速度如此之快,您甚至听不到任何声音播放。

尝试调用 sf::sleep() 让您的程序有时间在退出前播放歌曲。