12
votes

Comment jouer à C ++ à l'aide de Windows API?

J'essaie de jouer un fichier de musique dans mon codage, mais j'ai échoué. J'ai mon fichier de musique dans le même dossier qui enregistre le fichier .cpp.

peut-être que quelqu'un peut m'aider? P>

Mon code est le suivant: P>

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

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


3 commentaires

Quel est le code d'erreur que vous obtenez avec geterrrorCode ()?


Je ne suis pas sûr de GeterRrorCode () mais le message d'erreur est [Erreur de lieur] non défini Référence non définie à 'PlaySound @ 12' ID renvoyé 1 Statut de sortie


Vous avez besoin de winmm.lib pour jouer de la musique comme mentionné Luis


8 Réponses :


1
votes

Pouvez-vous utiliser un chemin absolu et vérifier s'il s'agit d'une erreur de chemin?

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


1 commentaires

Avez-vous eu un lien vers la lib requice?



12
votes

Vous devez utiliser le chemin absolu, assurez-vous que vous envoyez un nom de fichier (utilisez SND_FILEName Drapeau) et faites une pause le programme suffisamment longtemps pour lire le fichier son (par exemple, utiliser getcharar ()). Vous devez relier la bibliothèque WinMM.LIB dans les paramètres de votre projet et #include windows.h et mmsystem.h dans l'en-tête.

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

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


1 commentaires

Comment compileriez-vous cet exemple sous GCC / Windows?



1
votes
int main() { 
    PlaySound("kenny g.WAV", NULL, SND_ASYNC); 
}
With the SND_ASYNC flag your program can (and it will) terminate immediatelly!Try PlaySound("kenny g.WAV", NULL, SND_SYNC); first to see if it works.

0 commentaires

0
votes

Parler sur le chemin, votre fichier de données devrait être l'endroit où votre exécutable est, non de l'endroit où votre fichier source est, si le chemin n'est pas absolu.

et oui, cette question même a été Il y a 9 ans;)


0 commentaires

6
votes

Essayez d'ajouter -lwinmm à vos paramètres de compilateur. Cela a fonctionné pour moi. Il suffit de taper que dans la zone Options du compilateur et cela fonctionnera.


1 commentaires

Merci et nous devons l'ajouter à Linker Paramètres non dans les paramètres du compilateur.



0
votes

Vous pouvez tester par playseound (texte ("SystemStart"), NULL, SND_ALIAS);


0 commentaires

0
votes

Juste au cas où il n'est pas résolu encore! Vous devez inclure les deux fichiers d'en-tête mentionnés dans les commentaires précédents, associez le projet à la lib et placez le fichier son dans le même dossier que votre fichier .exe (au cas où vous n'utilisez pas le chemin complet)


0 commentaires

0
votes

Essayez ce code cela fonctionne pour moi. Aussi pour Code :: Bloc Utilisez Winmm dans les paramètres de liaison.

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


0 commentaires