2009-10-14 46 views
10

私は自分のコーディングで音楽ファイルを再生しようとしましたが、失敗しました。 .cppファイルを保存する同じフォルダに音楽ファイルがあります。Windows APIを使用してC++でPlaySoundをプレイする方法は?

誰かが私を助けることができますか?

私のコードは次のとおりです。

#include <iostream> 
#include <windows.h> 

int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC);  
} 
+0

GetErrorCode()関数ではどのようなエラーコードが表示されますか? – Naveen

+0

i)は GetErrorCode(についてはよく分からないが、エラーメッセージが [リンカエラー]「12 @ PlaySound」への未定義参照が idが1つの終了ステータス –

+0

を返されたルイスが述べたようにあなたが音楽を再生するWINMM.LIBが必要 – ukanth

答えて

1

あなたは絶対パスを使用して、それがパス・エラーであるかどうかを確認することはできますか?

Ex: PlaySound("C:\\kenny g.WAV", NULL, SND_ASYNC); 
+0

いいえ、動作しません。 –

+0

あなたは必要なライブラリにリンクしましたか? –

+0

私は完全に仕事の例を教えてくれますか? –

9

あなたは(例えば、()getchar関数を使用)、絶対パスを使用するファイル名(使用SND_FILENAMEフラグ)を送信していることを確認して、サウンドファイルを再生するのに十分な長さのプログラムを一時停止する必要があります。プロジェクト設定でwinmm.libライブラリをリンクする必要があり、ヘッダーにwindows.hとmmsystem.hを#includeする必要があります。

#include <windows.h> 
#include <mmsystem.h> 

int main() { 
    PlaySoundA((LPCSTR) "C:\\kenny g.WAV", NULL, SND_FILENAME | SND_ASYNC); 
    getchar(); 
} 

API:http://msdn.microsoft.com/en-us/library/ms712879(VS.85).aspx
それでなければなりません。ありがとう!

+1

gcc/windowsの下でこのサンプルをどのようにコンパイルしますか? – lowerkey

1
int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC); 
} 

SND_ASYNCフラグを使用すると、プログラムは即座に終了できます(そして終了します)!

まずはPlaySound("kenny g.WAV", NULL, SND_SYNC);を試してみてください。

+0

それはうんざりしています.....sorry –

0

パスについて言えば、データファイルはパスが絶対パスでない場合、ソースファイルの場所ではなく実行可能ファイルの場所にある必要があります。

そして、ええ、これは非常に疑問がasked 9年前になっている、あなたのコンパイラ設定のブツに-lwinmmを追加)

3

試してみます。それは私のために働いた。それをコンパイラオプション領域に入力すれば、それは動作します。

0

PlaySound(TEXT( "SystemStart")、NULL、SND_ALIAS)でテストできます。

0

まだ解決されていない場合もあります。 前のコメントに記載されている2つのヘッダーファイルをインクルードする必要があります。プロジェクトを必要なライブラリにリンクして、サウンドファイルを.exeファイルと同じフォルダに置きます(完全なパスを使用していない場合に備えて)。

0

このコードを試してみてください。また、code :: Blockでは、リンカー設定でwinmmを使用します。

#include <iostream> 
#include <windows.h> 
#include <MMSystem.h> 
int main(){ 
PlaySound(TEXT("your file path.wav") , NULL , SND_SYNC) ; 
    return 0; 
} 
関連する問題