Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.06.2012, 21:56

Probleme beim Einbinden von SDL_Mixer

Hallo Zusammen,

ich wollte nachdem ich das Buch C++ für Spieleprogrammierer
durch hatte das Spiel um eine Hintergrundmusik ergänzen.
Dazu habe ich versucht die SDL_Mixer-Funkionalitäten einzubinden,
aber hier ergibt sich das Problem.
Ich habe versucht die Anweisungen hier zu beachten:
http://lazyfoo.net/SDL_tutorials/lesson0…08e/index.php#1

nach dem kompilieren diese Warnung erhalte:
1>Verknüpfen...
1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>Das Manifest wird eingebettet..


Beim Ausführen erscheint dann:
"Das Programm kann nicht gestartet werden, da SDL_mixer.dll auf dem
Computer fehlt."


Obwohl im Ordner in dem das Projekt liegt (C://Projekte/SDL_Game/Das C++ Projekt) auch
SDL_mixer.dll vorhanden ist (C://Projekte/SDL-1.2.14/lib/sdl_mixer.dll).


Ich hoffe jemand hier kennt sich mit diesen Linker Dingen aus, denn
mir ist kein Fehler bzw. Feheln ersichtlich.

Vielen Dank für Eure Antworten!

Geheim

Treue Seele

Beiträge: 202

Wohnort: Salzburg

Beruf: Schüler

  • Private Nachricht senden

2

08.06.2012, 22:05

Eine kurze Suche mit Google: http://msdn.microsoft.com/de-de/library/…v=vs.80%29.aspx

"Wenn Sie diese Warnung erhalten haben und eine ausführbare Datei
erstellen möchten, die die singlethreaded Nicht-Debugversion der
Laufzeitbibliotheken verwendet, können Sie z. B. die folgenden Optionen
für den Linker verwenden:

/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib

Du musst die dll in denselben Ordner kopieren wo deine exe bzw. deine Projektmappe ist

MfG Geheim!

3

08.06.2012, 22:20

Auf genau diesen Eintrag bin auch schon gestoßen, aber als ich versucht habe das dort beschriebene
umzusetzten änderte sich nichts. Ich habe die Datei in den Debug Ordner des Projekts, da hier ja die .exe
erstellt wird. Langsam ist mir ein Rätsel wieso das bei dem Beispiel im Buch so leicht ging, da ich es eigentlich
genau wie dort beschreiben versucht habe, später nach der Anleitung im oben genannten Link.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Beorn« (09.06.2012, 14:01)


4

09.06.2012, 14:07

Ich habe die SDL_mixer.dll jetzt in das SDL_Game Verzeichnis
gesetzt und das hat geklappt. Jetzt erhalte ich aber eine neue
Warnung:

1>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.

wie kann ih dieses Problem beheben?

http://avid-insight.co.uk/joomla/blog/it…098-in-visual-c

hier habe ich herausgefunden, dass die SDL_mixer.h vermutlich anders
compiliert wurde als das SDL_Game. Vermutlich also nicht MDd, was ich
mit diesen Informationen anfangen soll ist mir aber ein Rätsel.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Beorn« (16.06.2012, 16:19)


5

16.06.2012, 16:51

Ich bin langsam echt verzweifelt, hat
keiner hier eine Idee?

S4My

unregistriert

6

16.06.2012, 18:58

Ich glaube ehrlich gesagt das Problem ist nicht das keiner eine Idee hätte, im Gegenteil, man hat wahrscheinlich zu viele Ideen. Probleme können verschiedenste Ursachen haben, also so gesehen ist es schwer genau zu sagen was du zu tun hast.
Viel weiterhelfen kann ich nicht, allerdings habe ich hier einen Link für dich: http://lazyfoo.net/SDL_tutorials/lesson0…2010e/index.php

Schau dort einmal vorbei. Es wird beschrieben wie man DLLs und die WICHTIGEN LIBs so einstellt, dass sie das Programm ohne weiteres finden kann. Soweit ich mich in diesem Bereich auskenne reicht es nicht aus einfach nur die DLL in den Ordner zu packen, das muss bei dem später fertigem Programm der Fall sein, sondern man muss auch andere Dateien einbinden. Sieh es dir an und schau ob es helfen kann, wenn du es dann gemacht hast und es immer noch nicht ohne Fehler funktioniert, tja, dann heißt es leider weitersuchen ;) .

Aber es wird auf alle Fälle nicht hilfreich sein seine Verzweiflung kund zu tun...jeder der irgendwann einmal mit Programmierung zu tun gehabt hat stieß früher oder später auf derartige Klippen die es zu umschiffen galt. Was dann aber den feinen Unterschied zwischen jenen Guten und jenen welche gescheitert sind ausmachte war, die Guten hatten einfach entweder nichts zu tun oder so viel Spaß an der Sache das sie nicht aufgeben wollten.

Mlg
S4My

7

18.06.2012, 19:47

Ich habe versucht mich an die LazyFoo Anleitung zu halten,
leider konnte ich diese nicht zu 100% übertragen. Da in dieser
Anleitung beispielsweise eine Windowsanwendung erzeugt
wird es sich im Buch aber um eine Konsolenanwendung handelt.

Ich habe das komplette Projekt jetzt auf VS 2010 übertragen,
es aber nicht einfach konvertiert sondern alles nochmal
neugemacht nichts desto trotz bleibt die Warnung erhalten:
>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.

Ich bin mir jetzt sicher wo der Fehler liegt, es muss die
Run-Time-Library Einstellung sein. Das Projekt aus dem Buch wurde
mit /MDd erstellt (anders funktioniert es gar nicht) die SDL_Mixer
Ergänzung aber vermutlich mit /MD. Was muss ich tun um hier
eine Übereinstimmung zu erreichen, das Projekt einfach auf /MD
umzustellen klappt leider nicht auch wenn ich nicht weiß warum.

S4My

unregistriert

8

18.06.2012, 20:26

Tja, kann nur besser werden :D .

Ich hab jetzt ein wenig gesucht und das hier gefunden: http://msdn.microsoft.com/en-us/library/…4(v=vs.60).aspx :this:

Das Problem das du hier hast ist mir ehrlich gesagt völlig neu ^^, bei mir ging es nach dem ich alles wie im Tutorial eingestellt habe, aber wenigsten kann ich so auch etwas lernen. So wie es aussieht musst du wie in der Fehlermeldung auch beschrieben in den Einstellungen angeben welche LIBs ignoriert werden sollen damit sich keine mehr im Weg stehen.

Noch abschließend eine Frage zwecks Verständnis: Wo steht dort etwas von einer Windowsanwendung im Tutorial? Es wird eine einfach .cpp Datei erzeugt und mit den selben Methoden wie im Buch auch ein Fenster gestartet. Nebenbei sind diese Einstellungen universell, es kommt nicht darauf an ob ich in der Konsole oder in einem Windowsfenster programmiere, zumindest sehe ich hier in diesem Fall keinen Unterschied.

Mlg
S4My

9

18.06.2012, 22:00

Im Tutorial wird unter 9. das Subsystem statt auf Konsole
auf Windows gestellt.

Zum Ignorieren der Libraries habe ich in verschiedenen Foren gelesen,
dass hier neue Fehler entstehen können und das eingentlich nur ein
"Pseudolösung" von Windows ist. Sozu sagen als Lückenfüller;)
Ich werds aber trotzdem mal probieren.

Leider ist noch ein neues Problem aufgetreten, diesmal ist eine .dll die
fehlt. Anfangs hieß es beim Programmstart es fehlt libstdc++-6 also habe
ich diese heruntergeladen und ergänzt. Da kam aber auch schon der
nächste Fehler dieses mal ist es libgcc_dw2_1. Bis jetzt habe ich heraus
gefunden, dass es sich hier um zum Compiler gehörige Dateien handelt
und dieses Problem vermutlich wegen des Umstiegs auf VC 2010 auftritt.

Trotz der Fehlermeldung am Anfang läuft das Programm aber, zwar ohne
Ton aber doch.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Beorn« (18.06.2012, 22:16)


S4My

unregistriert

10

18.06.2012, 22:22

Ok, das hast du also gemeint, ich hatte das falsch verstanden ;) .

Ja, das mit der Pseudolösung ist relativ suboptimal, kann ich verstehen. Ich stell das jetzt einfach mal so in den Raum: hast du dir die gesamte SDL Dokumentation zum Thema SDL_Mixer durchgelesen? Meistens sind nämlich auch Hinweise zu bekannten Problemen aufgelistet. Könnte sein das für dich etwas dabei ist, weiß ich leider nicht genau.

Ach ja, um noch einmal auf das Buch zurückzukommen: ich hab es auch durchgearbeitet und dann während des Beispiels mit der SDL das Tutorial befolgt, da es bei mir nicht richtig funktioniert hat. Also müsste es von dieser Seite her keine Probleme geben zum Thema Einstellungen, ob nun CONSOLE oder WINDOWS.

Ich wünsch dir auf alle Fälle Glück :thumbsup: .

Mlg
S4My

Werbeanzeige