2009-10-14 8 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

은 내가 하지만 오류 메시지가 임) 반환 값 : SQLState 치 getErrorCode (약 확실하지 않다 [링커 오류] 당신은 루이스가 언급 한 바와 같이 winmm.lib 음악을 재생해야 ID가 1 종료 상태 –

+0

를 반환 '@ 12는 PlaySound'에 대한 정의되지 않은 참조 – ukanth

답변

1

당신은 절대 경로를 사용하고 경로 오류가 있는지 확인 할 수 있나요?

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

아니요, 작동하지 않습니다. –

+0

당신은 필요한 lib에 링크 했습니까? –

+0

나에게 완벽한 예제를 줄 수 있습니까? –

9

당신은 사운드 파일을 재생하기 위해 충분히 프로그램을 사용하면 파일 이름 (사용 SND_FILENAME 플래그)를 전송하고 있는지 확인, 절대 경로를 사용하고, 일시 중지해야 (예를 들어, 사용 getchar가()). 프로젝트 설정에서 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

그것 dint work..sorry –

0

경로에 대해 말하면 경로가 절대 경로가 아닌 경우 데이터 파일은 원본 파일이 아닌 실행 파일의 위치에 있어야합니다.

그리고 그래, 바로이 질문 asked 9 년 ago있다) 컴파일러 설정에 -lwinmm를 추가

3

시도는 말았 어. 그것은 나를 위해 일했습니다. 컴파일러 옵션 영역에 입력하면 작동합니다.

0

PlaySound (TEXT ("SystemStart"), NULL, SND_ALIAS)로 테스트 할 수 있습니다.

0

아직 해결되지 않은 경우가 있습니다. 앞의 설명에서 언급 한 두 개의 헤더 파일을 포함하고 프로젝트를 필요한 lib에 연결하고 전체 경로를 사용하지 않는 경우에 대비하여 .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; 
}