我正在学习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
我的编译没有错误,但是当我运行程序时,声音没有出来。我检查了我的音量,但没有任何改变。
答案 0 :(得分:3)
我怀疑audio.play()
是异步的。所以你的程序在声音开始播放后立即退出。
只需在程序退出之前执行此操作:
audio.play();
cout << "Yay!" << endl;
sleep(9999); // sleep until CTRL+C is pressed
return 0;
答案 1 :(得分:3)
SFML sound tutorials说声音和音乐在一个单独的线程中播放。可能发生的是你的程序运行,开始在一个单独的线程上播放声音,但主线程继续运行并命中main
函数的末尾并退出,从而终止程序。简而言之:你的节目如此迅速地退出,你甚至听不到任何声音。
尝试拨打sf::sleep()
,让您的节目有时间播放该歌曲,然后退出。