2009-10-14 37 views
10

Intento reproducir un archivo de música en mi codificación, pero fallado. Tengo mi archivo de música en la misma carpeta que guarda el archivo .cpp.¿Cómo se juega a Sonido en C++ usando la API de Windows?

¿Alguien me puede ayudar?

Mi código es:

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

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

¿Cuál es el código de error que está obteniendo con la función GetErrorCode()? – Naveen

+0

No estoy seguro sobre el getErrorCode() pero el mensaje de error es [error de vinculador] referencia indefinida a 'PlaySound @ 12' Identificación devolvió el código de salida 1 –

+0

Es necesario Winmm.lib para reproducir música como Luis mencionó – ukanth

Respuesta

1

¿Se puede utilizar la ruta absoluta y comprobar si se trata de error de ruta?

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

no, no funciona. –

+0

¿Hiciste un enlace a la lib requerida? –

+0

¿me puede dar un ejemplo completo de trabajo? –

9

Es necesario utilizar la ruta absoluta, asegúrese de que usted está enviando un nombre de archivo (el uso de la bandera SND_FILENAME), y la pausa en el programa el tiempo suficiente para reproducir el archivo de sonido (por ejemplo, el uso getchar()). Debe vincular la biblioteca winmm.lib en la configuración de su proyecto, y #include windows.h y mmsystem.h en el encabezado.

#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
Esa debe ser la misma. Házmelo saber, gracias!

+1

¿Cómo compilaría ese ejemplo en gcc/windows? – lowerkey

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

Con la SND_ASYNC bandera de su programa puede (y será) terminar immediatelly!

Trate PlaySound("kenny g.WAV", NULL, SND_SYNC); primero para ver si funciona.

+0

esto no funciona ..sobre –

0

Hablando sobre la ruta, el archivo de datos debe estar donde el ejecutable es, no en el archivo de origen es, si la ruta no es absoluta.

Y sí, esta misma pregunta ha sido hace asked 9 años;)

3

intento de añadir -lwinmm a la configuración del compilador cosita. Funcionó para mí Solo escríbalo en el área de opciones del compilador y funcionará.

0

puede probar por PlaySound (TEXTO ("SystemStart"), NULL, SND_ALIAS);

0

Sólo en caso de que no se ha resuelto todavía! Necesita incluir los dos archivos de encabezado mencionados en comentarios anteriores, vincular el proyecto a la lib requerida y colocar el archivo de sonido en la misma carpeta que su archivo .exe (en caso de que no esté usando la ruta completa)

0

Prueba este código, me funciona. También para el código :: Bloque use winmm en la configuración del enlazador.

#include <iostream> 
#include <windows.h> 
#include <MMSystem.h> 
int main(){ 
PlaySound(TEXT("your file path.wav") , NULL , SND_SYNC) ; 
    return 0; 
} 
Cuestiones relacionadas