PlaySound(); Problem
-
(Ich benutze den Dev-C++ 4.9.4.1 Compeiler.)
Wie kann ich eine .wav Datei abspielen?
Ich habe winmm.a in Projektoptionen in Dateien/Verzeichnisse als Bibliotheksverzeichnis eingebunden.
Ich habe 2 Beispiele und beide funktionieren nicht.Beispiel 1:
#include <windows.h>
#include <mmsystem.h>int main()
{
a:
PlaySound("test.wav",NULL,SND_LOOP | SND_SYNC);
goto a;
}Hier bringt er mir "parse error before character 0246"
Beispiel 2:
#include <windows.h>
#include <mmsystem.h>int main()
{
a:
PlaySound("test.wav",NULL,SND_LOOP);
goto a;
}und hier bringt er mir "[Linker error] undefined reference to ´PlaySoundA@12´
-
Da fehlt wohl eine lib lib lib lib lib
probier mal#pragma comment(lib, "winmm.lib")
-
Danke
aber wenn ich das reinschreibe dann bekomme ich immer noch die genau gleichen Fehlermeldungen!
-
Liegt daran das DevC++ mit "#pragma comment(lib..)" nichts anfangen kann (Ist glaube ich was Micorosoft-spezifisches...)
Du musst die winmm.lib irgendwo anders direkt bei DevC++ eintragen.
DevC++ benutzt glaube ich MingW als Compiler, da wird die Lib vermutlich "winmm.a" heissen müssen...(Ist DevC++ nicht seit Jahren ein totes Projekt? Ich dachte die Leute wären inzwischen alle auf Code::Blocks, Visual Studio Express Edition oder eclipse oder sonstwas umgestiegen...)
-
Ja aber gibt es da nicht vieleicht eine alternatife um Sound Dateien abzuspielen?
Wenn nicht dann schreibt mir bitte mal einen Link von dem bessten C++ Compeiler den es momentan gibt.
-
Man kann doch in DevC++ bestimmt auch Libs angeben. Wenn nich, einige gut wären Codeblocks und Visual Studio.
-
Projekt Optionen->Linker Optionen die Bezeichnung "-lwinmm" ohne Anführungszeichen angeben.
-
Ich habe es geschafft ich habe einfach meinen Compeiler upgedatet
vorher 4.9.4.1
jetzt 4.9.8.0und libwinmm.a in den Projekt Optionen eingebunden.
:D:):D
-
JoelW schrieb:
Ja aber gibt es da nicht vieleicht eine alternatife um Sound Dateien abzuspielen?
Ist eine ziemlich gute Alternative zu den Windowsfunktionen mit vielen Optionen.
Ich verwende des sehr gern.
-
Ich habe nochmal eine ähnliche Frage.
Wie kann ich die Datei im Hintergrund in der Endlosschlaufe laufen lassen?
(Ohne das ich darauf warten muss das die Musik fertig abgespielt ist.)
-
Versuche es mal mit SND_ASYNC:
PlaySound("test.wav", NULL,SND_LOOP | SND_ASYNC);
SND_ASYNC
The sound is played asynchronously and PlaySound returns immediately after beginning the sound. To terminate an asynchronously played waveform sound, call PlaySound with pszSound set to NULL.SND_SYNC
Synchronous playback of a sound event. PlaySound returns after the sound event completes.
-
Danke aber wenn ich es so schreibe dann kommt immer die Fehlermeldung:
stray '/246' in program
Wenn ich das | durch das Zeichen ersetze das so wie ein I ausseht,
dann compliert er es zwar aber die .wav Datei wird nur abgespielt bis ich eine andere .wav Datei abspiele.
Ich möchte aber eigentlich das die .wav Datei solange abgespielt wird bis ich es mit einem Befehl abbreche.Wie geht das und wie breche ich es sonst ab?
-
JoelW schrieb:
Danke aber wenn ich es so schreibe dann kommt immer die Fehlermeldung:
stray '/246' in program
Wenn ich das | durch das Zeichen ersetze das so wie ein I ausseht,
Das Zeichen, was wie ein I aussieht, nennt sich PIPE und dient als Bitoperator mit der Funktion OR. Siehe hierzu in einem Tutorial für Bitoperatoren nach
JoelW schrieb:
dann compliert er es zwar aber die .wav Datei wird nur abgespielt bis ich eine andere .wav Datei abspiele.
Richtig. Wenn du bei Start einer anderen Datei die erste nicht Beenden willst, so musst du "SND_LOOP | SND_ASYNC | SND_NOSTOP" schreiben. Bedenke, dass die 2. Datei aber NICHT nebenbei läuft.
JoelW schrieb:
Ich möchte aber eigentlich das die .wav Datei solange abgespielt wird bis ich es mit einem Befehl abbreche.
Ich vermute, dass hast du schon. Hier muss als 1. Parameter der Funktion PlaySound NULL angegeben werden. Danach kannst du die 2. Sounddatei abspielen.
Zusaetzlich empfehle ich noch die Doku, die eigentlich alles weitere enthalten sollte
http://msdn.microsoft.com/en-us/library/aa909766.aspx
-
PROBLEMME
1.Zum zweiten mal wenn ich ein | mache kommt die Fehlermeldung stray '/246' in program!
2.Ich will aber das zwei .wav dateien gleichzeitig laufen! da gibt es doch sicher einen Befehl dafür.
Bitte helft mir
-
JoelW schrieb:
1.Zum zweiten mal wenn ich ein | mache kommt die Fehlermeldung stray '/246' in program!
Schmeiss den DevC++ in den Muell. Verwende, wie schon erwaehnt, Codeblocks oder Visual Studio. Die sind ebenfalls kostenlos und machen weniger Probleme.
JoelW schrieb:
2.Ich will aber das zwei .wav dateien gleichzeitig laufen! da gibt es doch sicher einen Befehl dafür.
Bitte helft mirIch bin mir sicher, dass das in den vorherigen Post's nicht drin stand. So wirst
du mit deinem Programm nie fertig, wenn du immer nur haeppchenweisse mit deinen Informationen rausrueckst :D.
PlaySound ist dafuer glaube ich nicht geschaffen, da dies nur ueber einen Kanal laeuft.
Schau mal hier:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-256383.html
http://msdn.microsoft.com/en-us/library/dd757161(VS.85).aspxWenn du umfangreichere Dinge mit Sounds machen willst, so hab ich bereits auf fmod hingewiessen.
-
Nein wenn es auch nur Irgendwie umgehbar ist dann bleibe ich bei meinem Compeiler!:D
Dieses Beispiel funktioniert zwar aber könnte ich das auch in der Endlosschleife abspielen?
Wenn ja wie?#include <conio.c>
int main()
{
char data[100];
sprintf(data,"open %s",test.mp3");
mciSendString(data,NULL,0,NULL);
sprintf(data,"play %s from 0","test.mp3");
mciSendString(data,NULL,0,NULL);
printf("play test.mp3\n");
PlaySound("test.wav",NULL,SND_SYNC);
printf("play test.wav\n");
for( ; ; ){}
}
-
Laut Doku von hier
http://msdn.microsoft.com/en-us/library/dd743667(VS.85).aspxist es für den Typ "waveaudio" nich moeglich, repeat anzugeben.
Es sei denn, ich werde eines besseren belehrt.
-
Entschuldigung aber ich verstehe kein Wort.:(
(Ich verwende doch gar kein waveaudio.)
Also frage ich nochmal wie kann ich die Hintergrundmusik in der Endlosschleife abspielen?
-
Warum liest du nicht den Artikel, den ich dir geschickt habe,
WARUM NUR WARUM?// 2. Zeile digitalvideo from positionfullscreen [b]repeat[/b] reverse to positionwindow
repeat ist hier nur fuer digitalvideo moeglich. Ich vermute, du spielst kein Video ab?
-
Ich habe es doch gelesen aber ich verstehe nicht was das mit meinem Problem zu tun hat.
Ich verwende doch gar kein waveaudio!
Und man kann die Hintergrundmusik doch sicher irgendwie in der Endlosschleife abspielen.
Wenn man dafür einen anderen Befehl braucht dann sag mir bitte welchen,
und wenn es möglich ist möchte ich das mit den Dateien machen die bei meinem Compeiler dabei sind.