[C++] Simpele .wav playback functie: mmsystem.h mist iets?

Pagina: 1
Acties:

  • CU2morO
  • Registratie: September 2001
  • Laatst online: 30-11 16:09
Ik ben op dit moment aan het werkt met een C++ console projectje gecombineerd met de glut OpenGL library in Visual Studio 2005.
Nu komt het echter voor dat ik naast deze OpenGL animaties een simpel .wav'je af wil spelen op een bepaald punt.

Omdat het een simpel, enkele-klasse project betreft leek mij DirectSound ongeschikt, omdat het niet om managed code gaat, en de non-managed implementatie tamelijk complex en uitgebreid is. Ik heb daarom gekozen om gebruik te maken van de 'mmsystem.h' library welke simpelweg al aan functie héeft om .wavjes af te spelen.

Nu wil echter het probleem dat wanneer ik de de regel '#include <mmsystem.h>' toevoeg in de stdafx.h van mijn C++ Console project, en vervolgens build, ik een enorme hoeveelheid errors (iets minder dan 200 voordat hij stopt) genereer die allemaal afkomstig zijn van de mmsystem.h file. Wanneer ik op een willekeurige error dubbelklik, kom ik in de header file terecht van mmsystem. De errors zijn niet duidelijk en beschrijven fouten als een ';' die mist, etc. Duidelijk een geval van iets dat mist, aangezien deze header file zelf in orde is.

Via de GoT search kwam ik slechts bij 1 topic terecht: \[VC++] PlaySound() functie
Hier wordt door de sluitende mod 1 tip gegeven: "mmsystem.h includen dus, en linken tegen winmm.lib.". Het includen van de mmsystem.h is dus geen enkel probleem, alleen geeft die foutmeldingen. Het linken 'tegen' winmm.lib is mij niet duidelijk wat er bedoeld wordt. Hoe gaat zoiets in zijn werk met de nieuwere Visual Studio 2005? Ik heb zeker een uur gezocht naar dergelijke functies, maar ik krijg het idee dat zoiets niet mogelijk is omdat het mijn speciaal type project betreft. (C++, Unmanaged, Console (niet Win32 forms)).

Hoe zorg ik er voor dat ik tóch in dit ongebruikelijke project formaat een .wavje af kan spelen?

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Kijk altijd even naar de eerste error van de compiler. Als system headers errors veroorzaken komt dat 90% van de tijd omdat je een andere file niet geinclude hebt, of juist wel. Eenmaal die errors opgelost moet je nog zorgen dat de winmm library meegelinked wordt in je app, anders is de daadwerkelijke uitvoerbare binary code voor PlaySound() helemaal niet beschikbaar. Dat wordt bedoeld met 'linken tegen libmm'. Een library mee laten linken is zelfs mogelijk als ik een helloworld.c schrijf en 'm handmatig compile, dus dat kan met VS2005 ook wel.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Jimbolino
  • Registratie: Januari 2001
  • Laatst online: 02:13

Jimbolino

troep.com

ik geloof dat je dat hier ergens in kunt stellen:

http://msdn2.microsoft.co...edev10(en-us,msdn.10).gif

The two basic principles of Windows system administration:
For minor problems, reboot
For major problems, reinstall


  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Right click op je project -> properties -> linker -> input -> additional dependencies
Daar "winmm.lib" invullen

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MisterData
  • Registratie: September 2001
  • Laatst online: 27-11 20:42
En als je gewoon windows.h include? Dikke kans dat dat daar gewoon bij zit... :)

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

Een library? Nee :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Het zou kunnen, .oisyn:
code:
1
#pragma comment(lib, "winmm.lib")

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

MSalters schreef op woensdag 11 april 2007 @ 20:34:
Het zou kunnen, .oisyn:
code:
1
#pragma comment(lib, "winmm.lib")
't Is niet omdat een oplossing werkt(maar dan ook enkel met de VS compiler), dat het een goede oplossing is :P

  • .oisyn
  • Registratie: September 2000
  • Nu online

.oisyn

Moderator Devschuur®

Demotivational Speaker

MSalters schreef op woensdag 11 april 2007 @ 20:34:
Het zou kunnen, .oisyn:
code:
1
#pragma comment(lib, "winmm.lib")
Het kan maar het is niet zo. Windows.h en z'n descendants gebruiken geen #pragma lib, en winmm.lib wordt dus niet automagisch meegelinkt als je windows.h include.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1