2017-09-16 17 views
0

SFMLを使用して.wavサウンドファイルを再生する単純なC++プログラムがあります。それは次のようになります。SFMLはサウンドを再生しませんが、エラーはありません

#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; 
} 

私はパッケージとしてapt-getをとSFMLをインストールしたUbuntuの16.04 LTS上でそれを実行して

$ g++ -c main.cpp 
$ g++ main.o -o sfml-app -lsfml-audio 
$ ./sfml-app 

でそれをコンパイルしています。 ./sfml-appを実行すると "Hello World"が出力されますが、何も聞こえません。音量を上げ、コンピュータを再起動したり、ヘッドホンを入れたりしてみました。サウンドファイルをダブルクリックして再生すると、ビープ音が鳴ります。あなたの助け

答えて

2

ため

おかげで、あなたのコードが完全に正しかったとしても、何の音が再生されていない多くの理由が考えられます。
しかし、そうではありません.sf :: Sound :: play 非同期ではサウンドを別のスレッドで再生しますが(hereと同じですが)、アプリケーションは非常に速く終了します。指定されたサウンドバッファ

だから何を聞いて、少なくとも理論的にチャンスを持っているために、私は右の終了前に

std::cin.get(); 

のように、メインスレッドをブロックするためにいくつかの命令を挿入することをお勧め。

+0

ありがとう、これはすぐに働いた – YpsilonZett

関連する問題