1. ホーム
  2. c++

[解決済み] C++コンソールアプリケーションでPlaySound?

2022-02-28 07:05:53

質問

コードが正しくなるように編集されました (ta.speot.is に感謝します) - 最下部の新しい質問

私はコンソールを使って遊んでいるのですが、ある評価のために最初のプロジェクトを作るように言われました。基本的なアプリケーションはすべてできているのですが、それを少しジャズにして、いくつかのサウンドを追加したいと思いました。コンソールから再生される音です。

このテストは(一応)うまくいき、サウンドファイルを再生することができましたが、2つの問題があります...。

  1. 音が鳴り始めると、鳴り終わるまでアプリケーションがフリーズしてしまいます。

  2. リリースとしてコンパイルしようとすると、"fatal error LNK1120: 1 unresolved externals" というエラーが発生します。

#include <iostream>
#include <windows.h>
#include <mmsystem.h>
using namespace std;

int main(){
    //PlaySound(TEXT("mywavsound.wav"), NULL, SND_FILENAME); - My erroring code
    PlaySound(TEXT("mywavsound.wav"), NULL, SND_FILENAME | SND_ASYNC);// - the correct code
        
    int test = 0;
    cin>>test;
    return 0;
}

そこで質問ですが...

  1. コンソールをフリーズさせずにサウンドを再生するにはどうすればよいですか? 例えば、ループする音楽ファイルを再生しながら、プロジェクト が実行されていますか?また、他の音を重ねて再生することができれば最高です。 例えば、エンターキーを押すと音が鳴ります。 音楽を止めずに

  2. リリースとしてコンパイルするために、wavファイルを追加するにはどうすればよいですか?

EDIT

については知っています。 SND_ASYNC を使用したコードの例を持っている人はいますか? SND_ASYNC ?

EDIT 2

というわけで、これで動作するようになりました・・・。

PlaySound(TEXT("mysound.wav"), NULL, SND_FILENAME | SND_ASYNC);

今、私は1つ以上の音を一度に再生させる方法を考えています。 PlaySound() このフラグを2回立てると、1回目が停止して2回目が再生されます。 2つの音を同時に再生する方法はありますか?

解決方法は?

<ブロッククオート

コンソールをフリーズさせずにサウンドを再生するにはどうすればよいですか?

でググると PlaySound これが最初の結果です。 :

fdwSound

...

SND_ASYNC サウンドは非同期で再生され PlaySound は音を始めたらすぐに戻る。非同期で再生される波形サウンドを終了させるためには PlaySound とともに pszSound に設定します。 NULL .

検索エンジンとその機能についてよく理解しておく必要があります。

リリースとしてコンパイルするために、wavファイルを追加するにはどうすればよいですか?

をリンクする必要があります。 winmm.lib を Release と Debug の両方の構成で使用します。あるいは

#pragma comment(lib, "winmm.lib")

をソースコードの先頭に追加してください。