Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Wie lasse ich in C++ den PC Speaker dudeln?

Doctor Sid / 9 Antworten / Baumansicht Nickles

Ok, ich will nicht nur Gedudel sondern eine schöne Melodie.
Ich habe zu diesem Zweck folgende Bibliothek runtergeladen: http://www.simtel.net/pub/pd/41549.html
Das Archiv enthält neben einer .lib Datei und einem Header-File 5 Beispielmelodien.
Die .lib Datei habe ich in das entsprechende Verzeichnis von M$ Visual Studio kopiert und die Header-Datei in das Projekt eingebunden.
Allerdings bringe ich keines der Beispiele zum laufen.
Fehlermeldung:

Linking...
BEETH.OBJ : error LNK2001: unresolved external symbol _nosound
BEETH.OBJ : error LNK2001: unresolved external symbol _chord
BEETH.OBJ : error LNK2001: unresolved external symbol _schord
Debug/p1.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe

Ich habe das Gefühl, die Funktionen nosound(), chord() etc. sind überhaupt nirgends definiert.
Will mich der Typ etwa auf den Arm nehmen? Oder bin ich selbst schuld, dass es nicht geht?

Mir wäre sehr geholfen, wenn jemand diesem Problem auf den Grund gehen oder eine Alternative nennen könnte.

bei Antwort benachrichtigen
Was auf die Fresse? Doctor Sid „Wie lasse ich in C++ den PC Speaker dudeln?“
Optionen

>Die .lib Datei habe ich in das entsprechende Verzeichnis von M$
>Visual Studio kopiert

aber bestimmt nicht in den Projekteinstellungen (Alt-F7) bei 'Linker' unter "Objekt.-/Bibliothek-Module:" mit eingetragen!!!

Achtung:
Es könnte verschieden Versionen der Lib für Release- und Debug-Mode geben, Debug-Lib's haben meist noch ein 'd' am Namen anhängen!

>Oder bin ich selbst schuld, dass es nicht geht?

in 85% der Fälle -> JA!

bei Antwort benachrichtigen
Doctor Sid Was auf die Fresse? „ Die .lib Datei habe ich in das entsprechende Verzeichnis von M Visual Studio...“
Optionen

.lib file in den Projekteinstellungen eingetragen und jetzt folgendes Problem:

music.lib : fatal error LNK1136: invalid or corrupt file

Das gibts doch nicht...

bei Antwort benachrichtigen
thomas woelfer Doctor Sid „.lib file in den Projekteinstellungen eingetragen und jetzt folgendes Problem:...“
Optionen

klar gibt es das. in diesem fall wird das problem das sein, das du eine library verwenden willst die fuer einen _anderen_ linker gedacht war als fuer den, den du verwendest.

nachdem du das visual studio verwendest gehe ich davon aus, dass du ein win32 executable erzeugen willst - was anderes kann die vc++ version aus visual studio naemlich nicht.

die library die du da heruntergeladen hast scheit aber eine library fuer dos zu sein, denn ansonsten wuerde das 'speaker' ding nicht viel sinn machen.

m.a.w: du versucht eine 16bit-dos library in ein 32bit-windows programmm zu linken. das kann nicht gehen.

WM_FYI
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
Doctor Sid thomas woelfer „klar gibt es das. in diesem fall wird das problem das sein, das du eine library...“
Optionen

Oh, eine Antwort von Herrn Woelfer persönlich!
Welch eine Ehre ;)

Achso, achso, is also eine DOS Library.
Und wie piepse ich unter Windoof?

bei Antwort benachrichtigen
thomas woelfer Doctor Sid „Oh, eine Antwort von Herrn Woelfer persönlich! Welch eine Ehre Achso, achso, is...“
Optionen

gute frage... bin mir nicht sicher wie man mit dem speaker unter windows umgeht, ich vermute aber das das irgendow in den multimedia apis drin sein wird....

WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen
Doctor Sid thomas woelfer „gute frage... bin mir nicht sicher wie man mit dem speaker unter windows umgeht,...“
Optionen

Dann werd ich mal weitersuchen...
Trotzdem dankeschön!

bei Antwort benachrichtigen
Was auf die Fresse? Doctor Sid „Dann werd ich mal weitersuchen... Trotzdem dankeschön!“
Optionen

BOOL sndPlaySound
(
LPCSTR lpszSound,
UINT fuSound
);

aus der winmm.lib z.B!

bei Antwort benachrichtigen
Doctor Sid Was auf die Fresse? „BOOL sndPlaySound LPCSTR lpszSound, UINT fuSound aus der winmm.lib z.B!“
Optionen

Hab keine winmm.lib!
Das einzige File in dem die Funktion vorkommt ist mmsystem.h
Aber leider zu früh gefreut:

mmsystem.h(113) : error C2146: syntax error : missing ';' before identifier 'MMVERSION'
mmsystem.h(113) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

Wie zum Henker können in einer Headerdatei Strichpunkte fehlen?!

bei Antwort benachrichtigen
thomas woelfer Doctor Sid „Hab keine winmm.lib! Das einzige File in dem die Funktion vorkommt ist...“
Optionen

bevor mmsystem.h inkludiert werdenkann muessen noch andere header inkludiert werden (z.b. windows.h) - ansonsten fehlen einfach symbole und das file kann dann nicht uebersetzt werden.

WM_HOPETHISHELPS
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen